- 二分探索
- 整数部分を固定すると、小数部分は単調増加になる
- 整数部分をループで回して二分探索をすると通る
long double TENS = 1.0;
int saturate(long double value) {
value -= (int)value;
value *= TENS;
return (int)value;
}
int main() {
int L;
cin >> L;
REP(i, L) {
TENS *= 10.0;
}
int value;
cin >> value;
for (int i = 1; ; ++i) {
ll lower = i;
lower *= lower;
ll upper = i + 1;
upper *= upper;
ll l = lower;
ll r = upper;
while (l + 1 < r){
ll M = (l + r) / 2;
if (saturate(sqrt((long double)M)) <= value){
l = M;
} else {
r = M;
}
}
if (value == saturate(sqrt((long double)l))) {
cout << l << endl;
return 0;
}
}
}