티스토리 뷰

알고리즘

세 거듭제곱 문제

path7inder 2014. 9. 24. 18:40
프로그램 명: cube
제한시간: 1 초

페르마의 마지막 정리 " 2 보다 큰 n 에대해서 , a^n = b^n + c^n 인 1 보다 큰 a , b , c 가 존재하지 않는다 "

몇 백년 동안 페르마의 마지막 정리는 증명되지 않았다. ( 최근에 이 정리가 증명되었지만 , 아직 더 엄밀한 검증이 필요하다)

우리가 관심있는 식은 다음 식이다.( b,c,d > 1)

a3 = b3 + c3 + d3

N 이 주어질 때 N 이하 인 a 로 등식을 만족하는 집합 {a,b,c,d} 를 모두 구하는 것이다.

입력

100 이하인 정수 N 이 주어진다.

출력

입출력 예의 형식으로 출력한다. a 가 작은 순으로 출력하고 a 가 같은 경우 b 가 작은 순으로 출력한다.

입출력 예

입력

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)
출처: Mid-Central USA 1995

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
#include <iostream>
#include <math.h>
 
using namespace std;
 
void func(int num)
{
    int numThree = (int)(pow((double)num,3.0));
    int i,j,k;
    int min,mid,max;
 
    for(i=2; i<num; i++)
        for(j=i; j<num; j++)
            for(k=j; k<num; k++)
                if(numThree == (pow(i,3.0) + pow(j,3.0) + pow(k,3.0))){
                    printf("Cube = %d, Triple = (%d,%d,%d)\n",num,i,j,k); 
                    // 다 돌려보면 나옵니다.
                    break;
                }
}
 
int main()
{
    int N;
    
    cin>>N;
 
    for(int i=6; i<=N; i++){
        func(i);
    }
}

4 중첩 for문이지만... 그래도 4단계니까 괜찮을거에요...

'알고리즘' 카테고리의 다른 글

n번째 숫자 구하기 문제  (0) 2014.09.24
맥주 파티  (0) 2014.09.24
소인수 분해 문제  (0) 2014.09.24
이벤트 문제  (0) 2014.09.24
Collatz 추측 문제  (0) 2014.09.24
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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
글 보관함