地址:http://acm.hdu.edu.cn/showproblem.php?pid=1334
题意:输出所有(1,200]区间上满足a^3==b^3+c^3+d^3的式子。
mark:水题,枚举a、b、c,在[c,a-1]区间上二分求d后验证。n次wa,二分写得挫。
代码:
# include <stdio.h>
# include <math.h>
int sqrt3(int num,int l,int r)
{
int mid = 210 ;
if (l*l*l>num) return 0 ;
if (r*r*r<num) return 210 ;
while (r-l>1){
mid = (r+l)/2 ;
if (mid*mid*mid <= num) l = mid ;
else r = mid ;
}
if (r*r*r==num) return r ;
return l ;
}
int main ()
{
int a, b, c, d ;
for (a = 6 ; a <= 200 ; a++)
for (b = 2 ; b < a ; b++)
for (c = b ; b*b*b+c*c*c < a*a*a ; c++)
{
d=sqrt3(a*a*a-b*b*b-c*c*c,c,a-1) ;
if (d<c) break ;
if (d>=a) continue ;
if(a*a*a==b*b*b+c*c*c+d*d*d)
printf ("Cube = %d, Triple = (%d,%d,%d)\n",
a,b,c,d) ;
}
return 0 ;
}