思路:二分查找
#include<stdio.h> int sqrt(int x) { long long low=0,mid = 0; long long high = (long long)x; while(low<=high){ mid = (low + high)/2; if(mid*mid == x) return mid; if(mid*mid < x && (mid+1)*(mid+1) > x) { return mid ; } if(mid*mid > x && (mid-1)*(mid-1) < x) { return mid -1; } if(mid*mid > x){ high = mid - 1; }else{ low = mid + 1; } } return (int)mid; } int main() { long long a = 0; while(scanf("%lld",&a)!=EOF) { printf("%d\n",sqrt(a)); } return 0; }