본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 5692 : 팩토리얼 진법

반응형

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

 

5692번: 팩토리얼 진법

상근이는 보통 사람들이 사는 것과는 조금 다른 삶을 사는 사람이다. 상근이는 이런 사람들의 시선이 부담스럽기 때문에, 자신만의 숫자를 개발하기로 했다. 바로 그 이름은 팩토리얼 진법이다.

www.acmicpc.net

구현문제였습니다.

📕 풀이방법

📔 입력 및 초기화

테스트 케이스의 수가 주어지지 않았기 때문에 최대한 빠르게 입출력을 위해 c library와의 동기화를 끊어줍니다.while loop를 수행하면서 입력받습니다.

📔 풀이과정

getFacNum함수 내부에는 getFac함수가 동작합니다. getFac은 팩토리얼 수를 구한 결과를 반환하는 함수며 이 값을 토대로 팩토리얼 진법의 수를 getFacNum함수에서 반환하게 됩니다.

📔 정답출력

getFacNum함수의 결과값을 출력합니다.


📕 Code

#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

int getFac(int num){
    int tmp = 1;
    for(int i = 1; i <= num; i++)
        tmp *= i;
    return tmp;
}

int getFacNum(int num) {
    int tmp = num, sum = 0, cnt = 1;
    while(tmp){
        sum += tmp % 10 * getFac(cnt++);
        tmp /= 10;
    }
    return sum;
}

int main(){
    fastio;
    while(1){
        int n, ans = 0;
        cin >> n;
        if(!n) break;
        cout << getFacNum(n) << '\n';
    }
}