알고리즘/백준

[백준] 2331번 반복수열

JeongHyeon 2018. 1. 16. 19:46

문제

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

풀이과정

먼저 문제에서 주어진 규칙대로 벡터에 수열을 생성했다.
그리고 주어진 규칙대로 만들어진 수가 이미 수열에 존재하면 그 수가 존재하는 index 까지의 개수를 출력되도록 만들었다.

소스코드

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

vector<int> D;
int A, P;


int solution(int A)
{
    D.push_back(A);

    while (1)
    {
        int next_num=0;

        while (A != 0)
        {
            next_num += pow(A % 10, P);
            A /= 10;
        }

        for (int i = 0; i < D.size(); i++)
        {
            if (D[i] == next_num)
                return i;
        }

        D.push_back(next_num);

        A = next_num;
    }
}

int main()
{
    cin >> A >> P;

    cout << solution(A) << endl;

    //for (int i = 0; i < D.size(); i++)
    //    cout << D[i] << " ";

    return 0;
}