题目传送门: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;
}
本文探讨了如何通过编程解决完美立方数问题:寻找满足a³ = b³ + c³ + d³的所有整数四元组 (a, b, c, d),其中 a, b, c, d 为不同的整数且 b, c, d 均小于 a。使用 C 语言实现,通过预计算立方数值并利用嵌套循环来高效寻找符合条件的四元组。
8498





