백준 #2417 정수 제곱근

less than 1 minute read

백준 #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