求根
Implement int sqrt(int x)
.
Compute and return the square root of x, where x is guaranteed to be a non-negative integer.
Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned.
Example 1:
Input: 4 Output: 2
Example 2:
Input: 8 Output: 2 Explanation: The square root of 8 is 2.82842..., and since the decimal part is truncated, 2 is returned.
C++版本。注意其中i和tmp是int64_t,不然会报错RuntimeError:Line 8: Char 21: runtime error: signed integer overflow: 46341 * 46341 cannot be represented in type 'int' (solution.cpp)
#include <iostream>
using namespace std;
int mySqrt(int x){
if(x==0) return 0;
else{
for(int64_t i=1;i<=x/2+1;i++){
int64_t tmp=i*i;
if(tmp==x) return i;
if(tmp>x) return i-1;
if(tmp<x) continue;
}
return 0;
}
}
int main(){
int m;
cin>>m;
cout<<mySqrt(m)<<endl;
return 0;
}