Description
已知有一个圆心为(x, y)半径为r的圆,赵栋栋想要把这个圆的圆心转变成(x’, y’)。对于每一步操作来说,赵栋栋可以选择圆上的任意一点,并且使这个圆绕着这个点旋转任意角度。赵栋栋想要知道他最少需要几步操作才能使圆心从(x, y)变为(x’, y’)。
Input
输入包含多组测试数据。每组测试数据的第一行有五个正整数r,x,y,x’,y’(1 <= r <= 10000, -10000 <= x, y, x’, y’ <= 10000)。
Output
对于每组测试数据,输出一行,代表最少需要的操作数。
Sample Input
2 0 0 0 4
1 1 1 4 4
4 5 6 5 6
Sample Output
1
3
0
解析:题目其实就是让我们求两圆心距离最多小于几个直径长度,可以自己画一下,感受一下(哈哈哈),两个圆心是同一点,我们直接输出0.
#include <stdio.h>
#include <math.h>
int main()
{int x,y,x1,y1,r,d,cnt,l;double jl;while(~scanf("%d%d%d%d%d",&r,&x,&y,&x1,&y1)){if(x1==x&&y1==y){ //圆心不变就不用转了 printf("0\n");continue;}jl=sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y)); //两圆心距离 cnt=1,d=2*r; //cnt计数 l=1; //几个直径 while(jl>d*l){cnt++;l++;}printf("%d\n",cnt);}return 0;
}