문제 설명
문제
페르마의 마지막 정리는, 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 값이 작은 것부터 먼저 출력한다.
아래 출력 예제는 일부분만 나와있다.
풀이 과정
- a, b, c, d를 모두 전수조사
- a, b, c, d를 2~100까지 늘려가면서 b의 3제곱 + c의 3제곱 + d의 3제곱이 a의 3제곱인지 검사한다.
- 이 때, a, b, c, d를 크기순으로 출력해주어야 하므로 반복문을 a부터 d 순서로 진행한다.
- 중복된 요소를 출력하지 않기 위해 b의 반복 범위를 2
100라 할 때, c는 b+1100, d는 c+1~100으로 진행한다.
소스 코드
for l in range(2, 101):
for i in range(2, l):
for j in range(i+1, l):
for k in range(j+1, l):
temp = i ** 3 + j ** 3 + k ** 3
if l ** 3 == temp:
print("Cube = %d, Triple = (%d,%d,%d)"%(l,i,j,k))
'알고리즘[Python] > 백준 알고리즘' 카테고리의 다른 글
[ 2018 ] [투포인터] 수들의 합 5 (0) | 2021.08.09 |
---|---|
[ 10820 ] [String] 문자열 분석 (0) | 2021.08.08 |
[ 1477 ] [ 이분 탐색 ] 휴게소 세우기 (0) | 2021.08.07 |
[ 6236 ] [ 이분탐색 ] 용돈 관리 (0) | 2021.08.06 |
[ 1935 ] [ Stack ] 후위 표기식2 (0) | 2021.08.06 |