1. 程式人生 > 其它 >2810:完美立方,考點:列舉

2810:完美立方,考點:列舉

原題: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>
 3
using 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 }