题目来源:http://116.56.140.75:8000/JudgeOnline/problem.php?id=1717
1717: 打靶归来
时间限制: 1 Sec 内存限制: 64 MB题目描述
同学们参加了紧张有序的军训,对于实弹射击有极大的兴趣。大清早随教官扛着枪往数公里外的靶场进发。300米实弹射击训练正式开始,各种射击姿势,俯卧、半蹲或站立,同学们各个练得有板有眼。等到报靶员出场报出每个靶的环数了,同学们的枪法还不错! 我们的靶子为同心圆状,直径有2000毫米。我们规定,子弹打在靶子平面所对应的点与靶心的距离d,环数的计算标准规定如下: d>1000 为0环; 1000≥d≥900 为1环; 900>d≥800 为2环; 800>d≥700 为3环; 700>d≥600 为4环; 600>d≥500 为5环; 500>d≥400 为6环; 400>d≥300 为7环; 300>d≥200 为8环; 200>d≥100 为9环; 100>d≥0 为10环现在要你统计某人打靶练习的总环数。
输入
第一行包含2个整数,表示靶心在靶平面的坐标。第二行包含一个整数n(1≤n≤1000),表示射出子弹的发数。其后的n行,每行表示子弹打在靶平面的坐标。
输出
输出总环数。
样例输入
0 0
5
0 0
0 100
50 50
-80 80
90 -90
样例输出
47
解析:注意环数的判断条件,不要开根号,否则可能产生浮点型错误
代码:
#include<iostream>
using namespace std;
int main()
{
long long int goals = 0;
long long int x, y;
cin >> x >> y ;
int t;
cin >> t;
long long int m, n;
while (t--)
{
cin >> m >> n;
if ((m - x)*(m - x) + (n - y)*(n - y) > 1000 * 1000)
goals += 0;
else if ((m - x)*(m - x) + (n - y)*(n - y) >= 900 * 900)
goals += 1;
else if ((m - x)*(m - x) + (n - y)*(n - y) >= 800 * 800)
goals += 2;
else if ((m - x)*(m - x) + (n - y)*(n - y) >= 700 * 700)
goals += 3;
else if ((m - x)*(m - x) + (n - y)*(n - y) >= 600 * 600)
goals += 4;
else if ((m - x)*(m - x) + (n - y)*(n - y) >= 500 * 500)
goals += 5;
else if ((m - x)*(m - x) + (n - y)*(n - y) >= 400 * 400)
goals += 6;
else if ((m - x)*(m - x) + (n - y)*(n - y) >= 300 * 300)
goals += 7;
else if ((m - x)*(m - x) + (n - y)*(n - y) >= 200 * 200)
goals += 8;
else if ((m - x)*(m - x) + (n - y)*(n - y) >= 100 * 100)
goals += 9;
else
goals += 10;
}
cout << goals;
return 0;
}
/**************************************************************
Problem: 1717
User: 201730685257
Language: C++
Result: 正确
Time:0 ms
Memory:1484 kb
****************************************************************/