Online Judge/백준
[백준][C++] 2417: 정수 제곱근
vince joe
2020. 10. 30. 15:55
별로 어려울 건 없는 문제입니다. \(q^2\geq n\)인 자연수 q를 구하면 됩니다.
예를 들면 n=8인 경우 제곱근이 2.x이므로 답은 3이고, n=9인 경우 제곱근이 3이니까 답이 3입니다
결국 답은 ceil(sqrt(n))인데요, 실수연산은 오차가 발생하니 sqrt(n)이 정수인지 직접 확인해줘야 합니다. sqrt(n)^2 == n의 여부를 체크해주면 됩니다.
#include <cmath>
#include <iostream>
using namespace std;
using ull = unsigned long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif // ONLINE_JUDGE
ull n;
cin >> n;
ull q = (ull)sqrt(n);
cout << (q * q == n ? q : q + 1);
return 0;
}
n의 범위가 2^63 미만이니 8바이트 정수형을 사용해야 합니다.
반응형