http://acm.jlu.edu.cn/joj/showproblem.php?pid=1753
这道题目的一个思路是采用二分的思想进行枚举,然后打表即可,C代码如下:
1 #include <stdio.h> 2 #define max 0x7fffffff 3 4 int main() 5 { 6 long long i,j,cnt=0; 7 for(i=6;;i++) 8 { 9 j = i; 10 long long k = i*i+i*i; 11 long long low = i,high = max; 12 while(low<=high) 13 { 14 long long mid = (low+high)/2; 15 long long temp = mid*mid+mid; 16 if(temp==k) 17 { 18 printf("%lld,%lld\n",i,mid); 19 cnt++; 20 if(cnt==10)goto aa; 21 break; 22 } 23 else if(temp>k) 24 high = mid-1; 25 else low = mid+1; 26 } 27 j++; 28 } 29 aa: return 0; 30 }