搬圆桌


现在有一张半径为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

注意浮点数的运算,以及避免溢出。


#include<iostream>
#include<algorithm>

using namespace std;

int fun(int r)
{
    int x, y, x1, y1;
    cin>>x>>y>>x1>>y1;
    
    double tx = x - x1;
    double ty = y - y1;
    
    double distance = sqrt(tx*tx + ty*ty);
    return (int)distance/(2*r) + (fmod(distance, 2*r)>0.0 ? 1 : 0);
}
int main(){
    int r;
    while(cin>>r){
        int res = fun(r);
        cout<<res<<endl;
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值