본문 바로가기

Algorithm/Brute Force

(C++) - 백준(BOJ) 4690 : 완전 세제곱

반응형

https://www.acmicpc.net/problem/4690

 

4690번: 완전 세제곱

페르마의 마지막 정리는, a, b, c가 0이 아닌 정수이고, n이 2보다 큰 자연수 일 때, an = bn + cn을 만족하는 자연수 a, b, c가 존재하지 않는다는 정리이다. 이 정리는 아직 증명되지 않았다. 하지만, 완

www.acmicpc.net

brute force문제였습니다.

📕 풀이방법

📔 입력 및 초기화

세제곱을 key, 그 때의 밑을 value로 하여 저장할 map변수 m을 선언합니다.

📔 풀이과정

$$a^3 = b^3 + c^3 + d ^ 3$$a,b,c값만 결정된다면 d값은 자동으로 결정됩니다. 3중 for문을 돌며 d값에 해당하는 세제곱이 존재하는지 m으로부터 찾습니다.

📔 정답출력

해당 세제곱 d3이 존재한다면 증가하는 b,c,d에 대해서만 정답을 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
map <int,int> m;
int main(){
    for(int i = 2; i <= 100; i++) m[pow(i,3)] = i;
    for(int a = 2; a <= 100; a++){
        for(int b = 2; b <= 100; b++){
            for(int c = 2; c <= 100; c++){
                int d3 = pow(a,3) - (pow(b,3) + pow(c,3));
                if(!m[d3]) continue;
                if(b < c && c < m[d3])
                    printf("Cube = %d, Triple = (%d,%d,%d)\n", a,b,c,m[d3]);
            }
        }
    }
}