题目: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;
}