您的位置:首页 > Web前端

POJ 1543 Perfect Cubes(暴力)

2012-07-20 16:39 337 查看
题目链接

暴力水过的方式是多样化的。。

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define eps 0.000000001
int p[5],n,m,num;
struct tri
{
int a,b,c,d;
}o[100001];
int cmp(const void *a,const void *b)
{
struct tri *p = (struct tri*)a;
struct tri *q = (struct tri*)b;
if(p->a != q->a)
return p->a - q->a;
else return p->b - q->b;
}
void dfs(int step,int x)
{
int i,j,sum = 0;
for(i = 1;i < step;i ++)
sum += p[i]*p[i]*p[i];
if(sum > m)
return ;
if(step > 3)
{
j = (int)(pow(sum,1.0/3)+eps);
if(sum == j*j*j)
{
o[num].a = j;
o[num].b = p[1];
o[num].c = p[2];
o[num].d = p[3];
num ++;
}
return ;
}
for(i = x+1;i <= n;i ++)
{
p[step] = i;
dfs(step+1,i);
}
}
int main()
{
int i;
scanf("%d",&n);
m = n*n*n;
dfs(1,1);
qsort(o,num,sizeof(o[0]),cmp);
for(i = 0;i <= num-1;i ++)
printf("Cube = %d, Triple = (%d,%d,%d)\n",o[i].a,o[i].b,o[i].c,o[i].d);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: