반응형
[ 문제 ]
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
[ 코드 ]
using System.Numerics;
int n = int.Parse(Console.ReadLine());
BigInteger result = Factorial(n);
Console.Write(CountZero(result));
BigInteger Factorial(int n)
{
if(n <= 0)
{
return 1;
}
return n * Factorial(n - 1);
}
static int CountZero(BigInteger n)
{
int count = 0;
while (n % 10 == 0)
{
count++;
n /= 10;
}
return count;
}
[ 풀이 ]
예를들어 5! 즉, 5*4*3*2*1 = 120일때 뒤에서부터 0이 아닌 수가 나올때 까지의 0의 개수 출력하라는 문제..
5!은 1이다.
팩토리얼 재귀함수 만들어주고 10으로 나누었을때 나머지가 0이면 count를 1씩 증가하고 1의 자리 0을 지운다.
반복하다가 0이 아닌 수가 나오면 count 값을 반환한다.
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/1676
1676번: 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 11005번 진법 변환 2 (0) | 2024.02.07 |
---|---|
[C#] 백준 1978번 소수 찾기 (0) | 2024.02.07 |
[C#] 백준 2563번 색종이 (0) | 2024.02.06 |
[C#] 백준 28014번 첨탑 밀어서 부수기 (0) | 2024.02.06 |
[C#] 백준 27159번 노 땡스! (1) | 2024.02.06 |