Beakjoon 2331 반복수열

Baekjoon Online Judge

문제 링크 : https://www.acmicpc.net/problem/2331

나의 풀이

수열의 값이 이전에 계산한 수열의 값과 동일하다면 그 부분은 반복수열이 된다는 것을 이용하여 문제를 해결할 수 있다.

풀이 코드 : 2331 반복수열

#include <stdio.h>
#include <vector>

using namespace std;

long long pow(long long num, int p){
    long long result = num;
    for(int i=0;i<p-1;i++){
        result *= num;
    }
    return result;
}

long long get_Dn(long long num, int p){
    long long res = 0;
    while(num != 0){
        res += pow(num%10, p);
        num /= 10;
        
    }
    return res;
}

int main(){
    int P;
    long long A;

    scanf("%lld %d", &A, &P);

    vector<long long> D;
    D.push_back(A);
    long long next;
    int answer;
    bool stop = true;

     while(stop){
        next = get_Dn(D.back(), P);
        for(int i=0;i<D.size();i++){
            if(D[i] == next){
                stop = false;
                answer = i;
                break;
            }
        }
        D.push_back(next);
    }

    printf("%d", answer);   
}

채점결과

49993


© 2020. All rights reserved.

Powered by Hydejack v8.4.0