题目描述:
巧克力买来了肯定要分发呀,但是你的力气是有限的,你丢出去的糖果只能被距离你小于等于R的小朋友接到。因此你想知道,对于在某一个位置的小朋友,是否能接到你丢出去的糖果。
输入格式:
第一行一个整数T,表示数据组数
接下来T行,每行五个数,x,y,R,x0,y0,表示你的坐标(x,y),你能丢出去的距离R,某一个小朋友的位置(x0,y0)
输出格式:
T行,每行为YES或NO,第i行表示的是对应第i组的答案。若第i组的小朋友能接到糖果,输出“YES”,否则输出“NO” (均不加引号)
样例输入:
2
0 0 1 1 1
0 0 2 1 0
样例输出:
NO
YES
数据范围:
0<R<100000,|x|,|y|,|x0|,|y0|<100000
保证所有数的最多有四位小数
提示:
如果你不知道怎么处理多组数据,请看这个范例: Ubuntu Pastebin
# include<stdio.h>
# include<math.h>
/*巧克力买来了肯定要分发呀,但是你的力气是有限的,你丢出去的糖果只能被距离你小于等于R的小朋友接到。
因此你想知道,对于在某一个位置的小朋友,是否能接到你丢出去的糖果。
输入格式:第一行一个整数T,表示数据组数接下来T行,每行五个数,
x,y,R,x0,y0,表示你的坐标(x,y),你能丢出去的距离R,某一个小朋友的位置(x0,y0)
输出格式:T行,每行为YES或NO,第i行表示的是对应第i组的答案。
若第i组的小朋友能接到糖果,输出“YES”,否则输出“NO” (均不加引号)
样例输入:
2
0 0 1 1 1
0 0 2 1 0
样例输出:
NO
YES*/
int main()
{
int n, i, j;
long int x, y, x0, y0, r;
double m;
scanf("%d", &n);
long int a[n][5];
i = 0;
while(i < n)
{
j = 0;
while(j < 5)
{
scanf("%lf", &m);
if( m >=0)
{
a[i][j] =(long int)((m+0.00000000001) * 10000);
}
else
{
a[i][j] =(long int)((m-0.00000000001) * 10000);
}//double将0.0001 存为0.000999999循环 ,故通过加减一个极小数可以进位,再用强制转换去尾可获得需要的值
j++;
}
i++;
}
i = 0;
while(i < n)
{
x = a[i][0];
y = a[i][1];
r = a[i][2];
x0 = a[i][3];
y0 = a[i][4];
if ((x - x0)*(x - x0) + (y - y0)*(y - y0) <= r * r)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
i++;
}
return 0;
}
本文介绍了一个关于计算机编程问题,如何根据给定的坐标和投掷距离,判断糖果是否能被特定位置的小朋友接收到。通过输入数据实例和代码实现,展示了如何解决这个问题的算法。
1043

被折叠的 条评论
为什么被折叠?



