1731: E
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 141 Solved: 91
[ Submit][ Status][ Web Board]
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
HINT
对于第一个例子:
【解析】
作为一个数学渣渣表示很不服,其实这道题就是计算两圆心的距离再和直径进行比较减去直径循环,直到距离小于0,这样就能知道需要旋转多少次了
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int x1,x2,y1,y2;
int n,count;
double m;
while(~scanf("%d",&n))
{
count=0;
cin>>x1>>y1>>x2>>y2;
m=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
while(m>0)
{
m=m-2*n;
count++;
}
cout<<count<<endl;
}
return 0;
}