题意:给定n,在a<=n的情况下,求使得a^3=b^3+c^3+d^3成立的abcd,且依次不递减。
思路:暴搜就好。刚开始用pow(x,3)tle了,要先记录下x^3的值。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <algorithm>
#include <cstring>
#include <utility>
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
int n,a,b,c,d,an,bn,cn,dn;
int num[105];
void dfs(int sum,int t)
{
if(t==1)
{
for(b=2;b<=100;b++)
dfs(sum-num[b],t+1);
}
if(t==2)
{
for(c=b;c<=100;c++)
dfs(sum-num[c],t+1);
}
if(t==3)
{
for(d=c;d<=100;d++)
if(sum==num[d])
printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d);
}
}
int main()
{
for(int i=2;i<=100;i++) num[i]=i*i*i; //打表
while(scanf("%d",&n)!=EOF)
{
for(a=2;a<=n;a++)
dfs(num[a],1);
}
return 0;
}