题目描述
a3 = b3 + c3 + d3 为完美立方等式。例如123 = 63 + 83 + 103 。编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, b, c, d) ,使得a3 = b3 + c3 + d3,其中1 < a, b, c, d ≤ N。(^表示幂指数)
输入
正整数N (N≤100)。
输出
每行输出一个完美立方,按照a的值,从小到大依次输出。当两个完美立方等式中a的值相同,则依次按照b、c、d进行非降升序排列输出,即b值小的先输出、然后c值小的先输出、然后d值小的先输出。
样例输入 复制
24
样例输出 复制
Cube = 6, Triple = (3,4,5) Cube = 12, Triple = (6,8,10) Cube = 18, Triple = (2,12,16) Cube = 18, Triple = (9,12,15) Cube = 19, Triple = (3,10,18) Cube = 20, Triple = (7,14,17) Cube = 24, Triple = (12,16,20)
其实这个代码 卡了一小会 就是在输出的时候,开始的时候没有考虑到bcd顺序输出
但是还是要注意一下b<c<d这样的计算不是正经的
因为这个计算的是b<c 的结果,它的结果是0和1,
所以如果要用这个限制条件的的话
我们应该是b<c&&c<d
#include<stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int a,b,c,d;
for( a=2;a<=n;a++)
{
for(b=2;b<=n;b++)
{
for(c=2;c<=n;c++)
{
for(d=2;d<=n;d++)
{
if(a*a*a==b*b*b+c*c*c+d*d*d)
{
if(b<c&&c<d)
{
printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d);
}
else
break;
}
}
}
}
}
}
}