OneCompiler

3rd problem

122

// 3rd problem

 #include <iostream>
using namespace std;

float squareRoot(int num, int prec)
{
    int st = 0, end = num;
    int mid;
 
    float ans;
 
    while (st <= end) {
        mid = (st + end) / 2;
        if (mid * mid == num) {
            ans = mid;
            break;
        }
 
        if (mid * mid < num) {
            st = mid + 1;
            ans = mid;
        }
 
        else {
            end = mid - 1;
        }
    }
 
    float inc = 0.1;
    for (int i = 0; i < prec; i++) {
        while (ans * ans <= num) {
            ans += inc;
        }
 
        ans = ans - inc;
        inc = inc / 10;
    }
    return ans;
}

int main() 
{
    int n;
    cin>>n;
    
    double ans = squareRoot(n,3);
    cout<<ans<<endl;
    
    return 0;
}