跳伞
Description
一群肥宅找不到小姐姐当cp了,觉得人生没有希望干脆重来算了所以他们决定跳天台。
楼下的地上有一个靶子,靶子有十个同心环,半径分别为20,40,60,80,100,120,140,160,180,200
如果肥宅的落点所在最小环(可以在环上)的半径是 20 ⋅ ( 11 − m ) 20⋅(11−m) 20⋅(11−m),那么这个肥宅的人生价值就是m。
如果肥宅落在了最大的环以外那么就没有人生价值。
给定n个肥宅的落点坐标,求计算n个肥宅的总人生价值
Input
第一行一个正整数T表示数据组数。
接下来T组数据,
每组数据第一行为一个整数n表示肥宅数量,
接下来n行每行两个整数x,y表示肥宅的落点坐标
0
<
n
<
1
0
6
,
1
<
T
<
1
0
3
0<n<10^6, 1<T<10^3
0<n<106,1<T<103
−
300
≤
x
,
y
≤
300
-300\le x,y\le300
−300≤x,y≤300
Output
对于每组数据输出一行一个整数表示这组数据肥宅的总人生价值。
- 依题意直接模拟
- 需注意当落在原点的时候得10分不是11分!
#include<bits/stdc++.h>
#include<stdio.h>
#include<string.h>
#define maxn 200005
#define INF 0x3f3f3f3f
#define mst(a) memset(a,0,sizeof a)
#define ll long long
using namespace std;
//题号:肥仔跳楼
int main()
{
int t, n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
double x, y;
int ans = 0;
while(n--)
{
scanf("%lf%lf",&x,&y);
double r = sqrt(x*x+y*y);
if(r <= 200)
{
int m = 11- int(r/20+0.99999); //+0.99999 向上取整
if(x==0&&y==0)m=10;
ans += m;
}
}
cout << ans << endl;
}
return 0;
}