这道题比较简单,所以一些关键的注释就写在里面了,
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,a,b,c,d;
int Cube[101];
while(scanf("%d",&n)!=EOF)
{
for(int i=1; i<101; i++)
Cube[i]=i*i*i;
for(int a=6; a<=n; a++) //因为题目最小立方体数字从6开始
for( b=2; b<a-1; b++) //枚举从2开始,
{
if( Cube[a]<Cube[b]+Cube[b+1]+Cube[b+2])
break;
for(c=b+1; c<a; c++) //每次按照之前的基础上加1,保证三个数字不同
{
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;
}