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 }

你可能感兴趣的:(cube)