-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Bronze III] Title: 팩토리얼 진법, Time: 236 ms, Memory: 118172 KB -Baekjoo…
…nHub
- Loading branch information
Showing
2 changed files
with
41 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# [Bronze III] 팩토리얼 진법 - 5692 | ||
|
||
[문제 링크](https://www.acmicpc.net/problem/5692) | ||
|
||
### 성능 요약 | ||
|
||
메모리: 118172 KB, 시간: 236 ms | ||
|
||
### 분류 | ||
|
||
사칙연산, 수학 | ||
|
||
### 문제 설명 | ||
|
||
<p>상근이는 보통 사람들이 사는 것과는 조금 다른 삶을 사는 사람이다. 상근이는 이런 사람들의 시선이 부담스럽기 때문에, 자신만의 숫자를 개발하기로 했다. 바로 그 이름은 팩토리얼 진법이다. 팩토리얼 진법은 각 자리에 올 수 있는 숫자는 0부터 9까지로 10진법과 거의 비슷하다. 하지만, 읽는 법은 조금 다르다. 팩토리얼 진법에서는 i번 자리의 값을 a<sub>i</sub>×i!로 계산한다. 즉, 팩토리얼 진법에서 719는 10진법에서 53과 같다. 그 이유는 7×3! + 1×2! + 9×1! = 53이기 때문이다.</p> | ||
|
||
<p>팩토리얼 진법으로 작성한 숫자가 주어졌을 때, 10진법으로 읽은 값을 구하는 프로그램을 작성하시오. </p> | ||
|
||
### 입력 | ||
|
||
<p>입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 최대 5자리인 팩토리얼 진법 숫자가 주어진다. 입력의 마지막 줄에는 0이 하나 주어진다.</p> | ||
|
||
### 출력 | ||
|
||
<p>각 테스트 케이스에 대해서, 입력으로 주어진 팩토리얼 진법 숫자를 10진법으로 읽은 값을 출력한다.</p> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
import sys | ||
|
||
def fac(n): | ||
if n<=1: | ||
return 1 | ||
return n * fac(n-1) | ||
|
||
while True: | ||
result = 0 | ||
n = sys.stdin.readline().rstrip() | ||
if n=='0': | ||
break | ||
for kdx, k in enumerate(n[::-1]): | ||
result += fac(kdx+1) * int(k) | ||
print(result) |