题目传送门:http://poj.org/problem?id=1543
完美立方:a^3=b^3+c^3+d^3
解题思路:a最小为6,为避免对立方的重复计算,先用一个数组把立方存起来,然后再对四元组进行判断
b,c,d为不同的整数,且都小于a
#include <stdio.h>
#include <math.h>
int main()
{
int n,a,b,c,d;
long int cube[101];
while(scanf("%d",&n)!=EOF)
{
for(int i=1; i<=n; i++)
{
cube[i]=i*i*i;
}
for(a=6; a<=n; a++)
for(b=2; b<a-1; b++)
{
if(cube[a]<cube[b]+cube[b+1]+cube[b+2])
break;
for(c=b+1; c<a; c++)
{
if(cube[a]<cube[b]+cube[c]+cube[c+1])
break;
for(d=c+1; d<a; d++)
if(cube[a]==cube[b]+cube[c]+cube[d])
printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d);
}
}
}
return 0;
}