F.A.Q
Hand In Hand
Online Acmers
Problem Archive
Realtime Judge Status
Authors Ranklist
 
     C/C++/Java Exams     
ACM Steps
Go to Job
Contest LiveCast
ICPC@China
Best Coder beta
VIP | STD Contests
    DIY | Web-DIY beta
Author ID 
Password 
 Register new ID

球面几何

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 1    Accepted Submission(s): 1


Problem Description
已知一个球面的球心是原点,问球面上的 $n$ 个小圆将球面划分为了几个部分。

Hint: 用不通过球心的平面去截球面,所截得的曲线是一个圆,称该圆为这个球面的小圆。

Hint: 显然可以通过小圆的圆心坐标(在球面内部但不与球心重合)唯一确定一个小圆。
 

Input
第一行一个整数 $T$,表示数据组数。对于每组数据:

第一行 2 个整数 $n, R$,分别表示小圆个数、球面半径。

接下来 n 行每行三个整数 $x_i, y_i, z_i$ 表示一个小圆的圆心。

数据保证 $1 \le T \le 20, 1 \le \sum n \le 1000$,$1 \le R \le 10^9$;小圆的圆心在球的内部但不是原点($0 < x_i^2 + y_i^2 + z_i^2 < R^2$);任意球面上的点不被三个小圆穿过;所有小圆两两不相切。
 

Output
每组数据输出一行,包含一个整数,表示球面被小圆划分为了几个部分。
 

Sample Input
3 2 5 1 0 0 -1 0 0 2 5 1 0 0 0 1 0 3 5 1 0 0 0 1 0 0 0 1
 

Sample Output
3 4 8
 

Hint
对于样例一,两个小圆相离,因此球面被划分为:第一个小圆的内部、第二个小圆的内部、其余部分。
对于样例二,两个小圆相交,因此球面被划分为:圆1相对于圆2的补集、圆2相对于圆1的补集、圆1与圆2的交集、其余部分。
 

Source
 

Statistic | Submit | Discuss | Note
Hangzhou Dianzi University Online Judge 3.0
Copyright © 2005-2025 HDU ACM Team. All Rights Reserved.
Designer & Developer : Wang Rongtao LinLe GaoJie GanLu
Total 0.001000(s) query 1, Server time : 2025-03-28 20:12:19, Gzip enabled