POJ 1543 Perfect Cubes(暴力)

题目链接

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

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <math.h>
 4 #include <stdlib.h>
 5 #define eps 0.000000001
 6 int p[5],n,m,num;
 7 struct tri
 8 {
 9     int a,b,c,d;
10 }o[100001];
11 int cmp(const void *a,const void *b)
12 {
13     struct tri *p = (struct tri*)a;
14     struct tri *q = (struct tri*)b;
15     if(p->a != q->a)
16     return p->a - q->a;
17     else return p->b - q->b;
18 }
19 void dfs(int step,int x)
20 {
21     int i,j,sum = 0;
22     for(i = 1;i < step;i ++)
23     sum += p[i]*p[i]*p[i];
24     if(sum > m)
25     return ;
26     if(step > 3)
27     {
28         j = (int)(pow(sum,1.0/3)+eps);
29         if(sum == j*j*j)
30         {
31             o[num].a = j;
32             o[num].b = p[1];
33             o[num].c = p[2];
34             o[num].d = p[3];
35             num ++;
36         }
37         return ;
38     }
39     for(i = x+1;i <= n;i ++)
40     {
41         p[step] = i;
42         dfs(step+1,i);
43     }
44 }
45 int main()
46 {
47     int i;
48     scanf("%d",&n);
49     m = n*n*n;
50     dfs(1,1);
51     qsort(o,num,sizeof(o[0]),cmp);
52     for(i = 0;i <= num-1;i ++)
53     printf("Cube = %d, Triple = (%d,%d,%d)\n",o[i].a,o[i].b,o[i].c,o[i].d);
54     return 0;
55 }
posted @ 2012-07-20 16:39  Naix_x  阅读(173)  评论(0编辑  收藏  举报