백준 #2417 정수 제곱근
sqrtl 함수와 이진 탐색을 활용해 큰 정수의 제곱근을 구하는 문제.
#include <iostream>
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
long long binarySearch(long long l, long long r, long long n) {
    if(r >= l) {
        long long mid = l + (r - l) / 2;
        if(mid  == sqrtl(n)) {
            return mid;
        }
        if(mid > sqrtl(n)) {
            return binarySearch(l, mid - 1, n);
        }
        return binarySearch(mid + 1, r, n);
    }
    return l;
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    long long n;
    cin >> n;
    cout << binarySearch(0, n, n);
    return 0;
}
Comments