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

 

2635번: 수 이어가기

첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다.

www.acmicpc.net

 

 


[난이도] Silver5
[유형] 브루트포스

[풀이]
두번째 수를 1~N까지 모든 수로 바꿔보면서 수열을 구해주면 됩니다.

 

#include <cstdio>
#include <vector>
using namespace std;
int N;
vector<int> ans;
int main(){
    scanf("%d",&N);
    for(int i=1;i<=N;i++){
        vector<int> tmp;
        tmp.push_back(N);
        tmp.push_back(i);
        for(int j=1;;j++){
            if(tmp[j-1]-tmp[j]<0) break;
            tmp.push_back(tmp[j-1]-tmp[j]);
        }
        if(tmp.size()>ans.size()) ans=tmp;
    }
    printf("%d\n",ans.size());
    for(auto v : ans) printf("%d ",v);
}


https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Silver5/2635.cpp

+ Recent posts