Algoogle

Algorithm for Programming Contest

PKU 3175 Finding Bovine Roots

Category: PKU Tag: brute-force, math

Finding Bovine Roots

問題概要


与えられるL桁の数列が平方根の小数点以下L桁と一致する最小の数を求めよ

解法


平方根の整数部分を全てためす.
epsの決定とか適当だしうーんというかんじ.

コード


(3175.cpp) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <cmath>
#include <algorithm>

using namespace std;

long double eps, d;
int L, num;

inline long double sq(long double x){return x*x;}

int main(){
    cin >> L >> num;
    int ans = 0;
    eps = 1.0;
    d = num;
    for(int i = 0; i < L; i++){
        d /= 10;
        eps /= 10.0;
    }
    while(1){
        long long lb = ceil(sq(d+ans)), ub = sq(d+ans+eps)-1e-9;
        if(lb == ub){
            cout << lb << endl;
            break;
        }
        ans++;
    }
    return 0;
}

Comments