算法篇【枚举1 -- 完美立方】

1、问题:输出形如a*3 = b*3 + c*3 + d*3 的四元组

输入:

         一个正整数N(N<=100)。

输出:

        每行输出一个完美立方,其格式为,Cube = a,Triple = (b,c,d)

思路:

        四重循环枚举a、b、c、d,a在最外层,d在最里层,每一层都是从小到大枚举。

        a的范围[2:N];b的范围[2:a-1];c的范围[b:a-1];d的范围[c:a-1];

 1 #include <iostream>
 2 #include <cstdio>
 3 
 4 using namespace std;
 5 int main()
 6 {
 7     int N;
 8     printf("Please input the N value \n");
 9     scanf("%d",&N);
10     for(int a=2; a<=N; a++){
11         for(int b=2; b<a; b++){
12             for(int c=b; c<a; c++){
13                 for(int d=c; d<a; d++){
14                     if(a*a*a == b*b*b + c*c*c + d*d*d){
15                         printf("Cube = %d, Tripple = (%d,%d,%d) \n",a,b,c,d);
16                     }
17                 }
18             }
19         }
20     }
21     return 0;
22     system("pause");
23 }

运行:

 

总结:

       1、枚举输出的时候要考虑尽量去缩短枚举值的取值范围。

posted on 2018-03-03 19:56  hematologist  阅读(346)  评论(0)    收藏  举报

导航