当前位置: 代码迷 >> 综合 >> ZCMU--1731: E(C语言)
  详细解决方案

ZCMU--1731: E(C语言)

热度:6   发布时间:2023-12-06 10:07:36.0

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;
}