Gidhub BE Developer

[BOJ] 2331. 반복 수열

2018-09-14
goodGid

Problem

Problem URL : 반복 수열


[1] Answer Code (17. 08. 29)


#include <iostream>
#include <cstring>
#include <cmath>

using namespace std;

int arr[300005];
int cnt;

int main(){
    int a,p;
    cin >> a >> p ;
    
    while (1) {
        if( arr[a] == 2 ) break;
        arr[a]++;
        int number = 0;
        int a_number = a ;
        
        // 방법 1. 로그함수를이용한자리수계산
        number = (int)log10((double)a)+1;
        
        /*
         // 방법 2. 직접계산
         while (a_number != 0)
         {
         a_number /= 10;
         number++;
         }
         */
        
        a_number = a;
        
        int value;
        int tmp = 0;
        for(int i=number-1; i>=0; i--){
            value = a_number / pow(10, i);
            
            tmp += pow(value,p);
            
            a_number = a_number - ( value * pow( 10 , i ) ) ;
        }
        
        a = tmp ;
    }
    
    for(int i=1; i<300005; i++){
        if ( arr[i] == 1) cnt ++;
    }
    
    printf("%d\n",cnt);
    
    return 1; 
}

Review

  • 총 몇자리 인지 구하는 로직을 Key Point에 정리해 놨다.

Recommend

Index