https://www.acmicpc.net/problem/4690
문제
페르마의 마지막 정리는, a, b, c가 0이 아닌 정수이고, n이 2보다 큰 자연수 일 때, an = bn + cn을 만족하는 자연수 a, b, c가 존재하지 않는다는 정리이다. 이 정리는 아직 증명되지 않았다.
하지만, 완전 세제곱 방정식 a3 = b3 + c3 + d3을 만족하는 1보다 큰 자연수를 찾는 것은 어렵지 않다. (123 = 63 + 83 + 103)
이러한 완전 세제곱 방정식과 a ≤ 100을 만족하는 {a, b, c, d}쌍을 모두 찾는 프로그램을 작성하시오.
입력
이 문제는 입력이 없다.
출력
a값이 증가하는 순서대로 아래 출력 형식과 같이 출력한다. b, c, d도 증가하는 순서로 이루어져야 한다. a값에 해당하는 b, c, d쌍이 여러 개 존재할 수 있다. 이때는 b 값이 작은 것부터 먼저 출력한다.
아래 출력 예제는 일부분만 나와있다.
예제 출력 1
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
using namespace std;
#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <functional>
#include <cmath>
#include <map>
#include <set>
#define _CRT_SECURE_NO_WARNINGS
#define INF 987654321
#define ll long long
typedef pair<int, int> PII;
int main() {
for (int a = 6; a <= 100; a++) {
for (int b = 2; b < a; b++) {
for (int c = b + 1; c < a; c++) {
for (int d = c + 1; d < a; d++) {
if (a * a * a == b * b * b + c * c * c + d * d * d) {
printf("Cube = %d, Triple = (%d,%d,%d)\n", a, b, c, d);
}
}
}
}
}
return 0;
}
|
cs |
728x90
반응형
'🔻PS > Baekjoon' 카테고리의 다른 글
[Baekjoon] 백준 17389 보너스 점수 C++ (0) | 2022.09.19 |
---|---|
[Baekjoon] 백준 17173 배수들의 합 C++ (0) | 2022.09.18 |
[Baekjoon] 백준 15781 헬멧과 조끼 C++ (1) | 2022.09.16 |
[Baekjoon] 백준 5176 대회 자리 C++ (0) | 2022.09.15 |
[Baekjoon] 백준 4493 가위 바위 보? C++ (0) | 2022.09.12 |