SQUINT
|
Time Limit:1000MS Memory Limit:8000KB
Total Submit:1526 Accepted:421
Description
Write a program to calculate integer square roots.
Input
Its only line consists of an integer 0 <= n < 2^63 .
Output
Its only line consists of the smallest nonnegative integer q such that q^2 >= n .
Sample Input
122333444455555
Sample Output
11060446
Hint:
122333444455555^0.5 ≈ 11060445.038765619
#include <stdio.h>
int main(){
long long num = 0;
scanf("%I64d", &num);
unsigned long long sqrt = 0, weight = 1000000000;
for(; weight > 0; weight /= 10){
while(sqrt * sqrt < num)
sqrt += weight;
if(sqrt * sqrt == num){
sqrt--;
break;
}
sqrt -= weight;
}
printf("%I64u\n", sqrt + 1);
return 0;
}