백준 08558번 / 8558번 문제 링크
문제 이름 : Silnia
주 언어 : Python
태그 : 수학 / 사칙연산
solved.ac 등급 : Bronze IV (2023/05/19 확인)
문제 보기
문제 :
Niech n będzie nieujemną liczbą całkowitą. Liczbę n! (czytaj n-silnia) definiuje się następująco. Jeśli n ≤ 1, to n! = 1. Dla n > 1, n! jest równe iloczynowi wszystkich liczb od 1 do n, czyli n! = 1 * 2 * ... * n. Na przykład 4! = 1 * 2 * 3 * 4 = 24.
Napisz program, który
- wczyta ze standardowego wejścia nieujemną liczbę całkowitą n,
- policzy cyfrę jedności w zapisie dziesiętnym liczby n!,
- wypisze wynik na standardowe wyjście.
(축약 & 번역) - n!의 일의 자리 수를 출력해주세요.
입력 :
Pierwszy i jedyny wiersz standardowego wejścia zawiera dokładnie jedną nieujemną liczbę całkowitą n, 0 ≤ n ≤ 30000.
(축약 & 번역) - n이 주어지는데, n은 0 이상 30000 이하의 정수입니다.
출력 :
W pierszym i jedynym wierszu standardowego wyjścia Twój program powinien zapisać dokładnie jedną cyfrę równą cyfrze jedności w zapisie dziesiętnym liczby n!.
(축약 & 번역) - n!의 일의 자리 수를 출력합니다.
팩토리얼 에 관한 문제입니다.
$n!$을 구해서, 10으로 나눈 나머지 (== 일의 자리 수) 를 출력해주면 됩니다.
파이썬에서는 그냥 백준 27434번 - 팩토리얼 3 처럼 무식하게 n! 구하고, 10으로 나눈 나머지를 출력해도 좋습니다.
아니라면 훨씬 더 간단한 방법이 있는데, $5! = 120$, $6! = 720$, $7! = 5040$...처럼 $n \geq 5$이면 $n!$이 10의 배수임을 이용하는 겁니다. ($5! = 1 \times 2 \times 4 \times 4 \times 5 = 3 \times 4 \times 10$)
10의 배수라면 무조건 10으로 나눈 나머지는 0이므로, $n$이 $5$이상이라면 그냥 0만 출력해주면 됩니다.
그 이전은 $0! = 1$, $1! = 1$, $2! = 2$, $3! = 6$, $4! = 24$을 이용해주면 됩니다.
min(int(input()), 5)를 하게 되면, 입력된 값이 5보다 작으면 그 값을 가지고, 5보다 크면 5라는 값을 가지게 됩니다.
어차피 n = 5, n = 6, n = 7...의 경우가 모두 똑같이 0이기 때문에 해줄 수 있는 방법입니다.
-번째 푼 문제 (2022/--/--)