2810:完美立方,考點:列舉
阿新 • • 發佈:2021-07-08
原題:http://bailian.openjudge.cn/practice/2810/
描述
形如a3= b3+ c3+ d3的等式被稱為完美立方等式。例如123= 63+ 83+ 103。編寫一個程式,對任給的正整數N (N≤100),尋找所有的四元組(a, b, c, d),使得a3= b3+ c3+ d3,其中a,b,c,d 大於 1, 小於等於N,且b<=c<=d。
輸入
一個正整數N (N≤100)。
輸出
每行輸出一個完美立方。輸出格式為:
Cube = a, Triple = (b,c,d)
其中a,b,c,d所在位置分別用實際求出四元組值代入。
請按照a的值,從小到大依次輸出。當兩個完美立方等式中a的值相同,則b值小的優先輸出、仍相同則c值小的優先輸出、再相同則d值小的先輸出。
樣例輸入
24
樣例輸出
Cube = 6, Triple = (3,4,5) Cube = 12, Triple = (6,8,10) Cube = 18, Triple = (2,12,16) Cube = 18, Triple = (9,12,15) Cube = 19, Triple = (3,10,18) Cube = 20, Triple = (7,14,17) Cube = 24, Triple = (12,16,20)
解法
思路:直接遍歷,用四重迴圈判斷搜尋
注意列舉範圍,不然會超時
1 #include <iostream> 2 #include <cstdio> 3using namespace std; 4 int main() 5 { 6 int N; 7 cin >> N; 8 for (int a = 2; a <= N; ++a) 9 for (int b = 2; b < a; ++b) 10 for (int c = b; c < a; ++c) 11 for (int d = c; d < a; ++d) 12 if (a*a*a == b * b*b + c * c*c + d * d*d)13 cout << "Cube = " << a << ", Triple = (" << b << "," << c << "," << d << ")" << endl; 14 return 0; 15 }