蘑菇街笔试题1

来源:互联网 发布:jenkins windows 编辑:程序博客网 时间:2024/04/30 01:46

题目一  搬圆桌

现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1)。每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转。问最少需要移动几步。
输入描述:
一行五个整数r,x,y,x1,y1(1≤r≤100000,-100000≤x,y,x1,y1≤100000)
输出描述:
输出一个整数,表示答案
输入例子:
2 0 0 0 4
输出例子:
1
分析:其实这道题很简单,每一次圆心的移动,其变化的距离范围为0-2R,所以,至少需要移动几步,就是算移动后的圆心到当前圆心的距离除以2r,有小数需要进一。

(PS:开始用int时,显示测试案例正确80%,结果会溢出,所以我改用的long long防止溢出.)

#include<iostream>#include<math.h>using namespace std;long long dist(long long x1,long  long y1,long long x2,long long y2){return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));}int main(){int r,x1,y1,x2,y2;    while(cin >> r >> x1 >> y1 >> x2 >> y2)    {        int ans = 1;    long long dis = dist(x1,y1,x2,y2);    while(ans * 2*r < dis)        ans++;    cout << ans <<endl;    }    return 0;}


0 0
原创粉丝点击