//poj1011无限wa,做道简单的,直接暴力竟然AC啦
//大意:输出所有满足a^3 = b^3 + c^3 + d^3 的a
#include <iostream>
#include <cstdlib>
using namespace std;
int m(int m)
{
return m*m*m;
}
int main()
{
int i,j,k,n,p;
cin>>n;
for(p=6;p<=n;p++)
for(i=2;i<=n-1;i++)//已经保证bcd互不相等
for(j=i+1;j<=n-1;j++)
for(k=j+1;k<=n-1;k++)
if(m(i)+m(j)+m(k)==m(p))
cout<<"Cube = "<<p<<","<<" Triple = ("<<i<<","<<j<<","<<k<<")"<<endl;
//system("pause");
return 0;
}
//ac
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <string.h>
using namespace std;
bool vis[101];
int cute[101];
int res[5];
int T,step=1;
void init()
{
int i,j;
//原来写成了,i = 10,怪不得一直wa
for(i=1;i<=101;i++)
cute[i] = i*i*i;
}
void dfs(int num,int start,int n)
{
int i,j,k;
if(step==4)
{
if(num==0)
printf("Cube = %d, Triple = (%d,%d,%d)\n",n, res[1], res[2], res[3] );
}
else
{
for(i=start;cute[i]<=num;i++)//必须有等号,否则无法结束(成立时的最后一个数)
if(!vis[i])
{
vis[i] = true;
res[step] = i;
step++;
dfs(num-cute[i],i+1,n);
step--;
vis[i] = false;
}
}
}
int main()
{
int i,j,k;
init();
cin>>T;
memset(vis,false,sizeof(vis));
for(i=6;i<=T;i++)
{
step = 1;
dfs(cute[i],2,i);
}
system("pause");
return 0;
}