Beakjoon 2331 반복수열
in Algorithm
문제 링크 : 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);
}