四川大学(新生赛)papaya的传送门

这篇博客记录了一道C++编程题的解题思路,涉及数学运算和条件判断。题目要求计算点到圆心的距离并判断是否在机场范围内,以及根据给定距离k确定最少传送次数。解决方案包括计算距离、判断条件和应用向上取整函数来得出答案。
摘要由CSDN通过智能技术生成

题目:https://ac.nowcoder.com/acm/contest/25625/L

在这里插入图片描述
解题思路:
这就是一道水题。。。求出点到圆心的距离,然后减去半径就是从起点到机场的距离d,需要判断当前是否在机场,还有就是k是否大于d,如果大于那么就需要两次传送,第一次到一个机场外的点,第二次从这个点到机场。,如果k<d,那么直接d/k,如果有小数,那么答案再加1

#include <iostream>
#include <cmath>
using namespace std;


int main(){
    ios_base::sync_with_stdio(false);
    int t;
    cin >> t;
    while(t--){
        
        long long x,y,R,k;
        cin >> x >> y >> R >> k;
        
        double d = sqrt(x*x + y*y)-R;
        if(d <= 1e-6){
            cout << 0 << endl;
            continue;
        }
        if(k > d + 2*R){
            cout << 2 << endl;
            continue;
        }
//         long long dd = (d+0.999999);
//         long long ans =dd/k;
//         if(dd%k) ans+=1;
        long long ans = ceil(d/k);//向上取整,不管小数点后是多少(除0以外)都加一
        
        cout << ans << endl;
    }
    
    
    return 0;
}

个人学习笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值