AtCoder ABC198C. Compass Walking
原题链接
简单
作者:
白流雪
,
2021-04-12 21:50:31
,
所有人可见
,
阅读 337
算法
(数学)
- 当 $\lceil \frac{d}{r} \rceil \geqslant 2$ 时,答案为 $\lceil \frac{d}{r} \rceil$
- 当 $\lceil \frac{d}{r} \rceil = 1$ 时, 若 $r = d$,则答案为 $1$,否则答案为 $2$
- 但出于精度考虑可以把 $\lceil \frac{d}{r} \rceil \leqslant ans$ 转变为 $r^2 (ans)^2 \geqslant d^2$
C++ 代码
#include <bits/stdc++.h>
using std::cin;
using std::cout;
using ll = long long;
int main() {
ll r, x, y;
cin >> r >> x >> y;
ll d2 = x * x + y * y;
ll ans = 1;
while (1) {
if (r * r * ans * ans >= d2) break;
++ans;
}
if (ans == 1) {
if (r * r != d2) ans = 2;
}
cout << ans << '\n';
return 0;
}