#문제

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

 

10448번: 유레카 이론

문제 삼각수 Tn(n ≥ 1)는 [그림]에서와 같이 기하학적으로 일정한 모양의 규칙을 갖는 점들의 모음으로 표현될 수 있다. [그림] 자연수 n에 대해 n ≥ 1의 삼각수Tn는 명백한 공식이 있다. Tn = 1 + 2 + 3 + ... + n = n(n+1)/2 1796년, 가우스는 모든 자연수가 최대 3개의 삼각수의 합으로 표현될 수 있다고 증명하였다. 예를 들어, 4 = T1 + T2 5 = T1 + T1 + T2 6 = T2 + T2 or 6 = T

www.acmicpc.net

 

#작성 코드

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
#include <iostream>
#include <vector>
using namespace std;
 
int t;
vector<int> tri;
 
int main(){
    cin>>t;
 
    // maxnum 이하의 삼각수까지를 계산해서 tri 벡터에 저장한다. 
    for(int i=1; i*(i+1)/2<1000; i++){
        tri.push_back(i*(i+1)/2);
    }
 
    for(int i=0; i<t; i++){
        int x;
        cin>>x;
        // 1000 이하의 삼각수의 개수가 적으므로 삼중 포문으로 해결할 수 있다.
        bool possible=false;
        for(int a=0; a<tri.size(); a++){
            for(int b=a; b<tri.size(); b++){
                for(int c=b; c<tri.size(); c++){
                    if(x==tri[a]+tri[b]+tri[c]){
                        cout<<"1\n";
                        possible = true;
                    }
                    if( possible ) break;
                }
                if( possible ) break;
            }
            if( possible ) break;
        }
        if(!possible) cout<<"0\n";
    }
    
    return 0
}
cs

##

'BOJ' 카테고리의 다른 글

BOJ 1182번 :: 부분수열의 합  (0) 2020.02.06
BOJ 2503번 :: 숫자 야구  (0) 2020.02.06
BOJ 3085번 :: 사탕 게임  (0) 2020.02.04
BOJ 2309번 :: 일곱 난쟁이  (0) 2020.02.03
BOJ 16500번 :: 문자열 판별  (0) 2020.02.03

+ Recent posts