Darts
题意:
向靶心位于原点的圆形靶投掷飞镖。给一组坐标,表示飞镖的落点,落在靶上则得分,脱靶不计分。计算最终得分。
思路:
算出飞镖落点,算出落点与靶心的距离,向上取整,按给定得分规则计分即可。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <queue>
#include <cmath>
using namespace std;
const int maxn = 204;
int hittingPoint[maxn];
int main(){
#ifdef TEST
freopen("test.txt", "r", stdin);
#endif // TEST
// 将半径为整数的环记上对应的分值,后续操作直接查询数组即可。
hittingPoint[0] = 10;
for(int i = 1; i < maxn; i++){
hittingPoint[i] = 10 - (i-1)/20;
}
int n;
cin >> n;
while(cin >> n){
int totalPoints = 0;
for(int i = 0; i < n; i++){
int x, y;
scanf("%d%d", &x, &y);
int d = ceil(sqrt(pow(x, 2)+pow(y, 2)));
if(d <= 200) // 脱靶不计分
totalPoints += hittingPoint[d];
}
printf("%d\n", totalPoints);
}
return 0;
}