코딩테스트 연습/Baekjoon
[Baekjoon] 1676번: 팩토리얼 0의 개수 (c++)
수기
2022. 3. 31. 19:49
https://www.acmicpc.net/problem/1676
1676번: 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
- 끝자리 수가 2x5=10, 2x2x5=20, 2x2x5x5=100.. 등 5의배수의 개수에 따라 끝자리수0이 더해진다.
- 25는 5x5로 5를 2번 사용, 그리고 앞에 2가 2번이상 있으므로 25의배수는 0이2개 붙는다.
- 125는 5x5x5로 5를 3번 사용, 앞에 2가 3번이상 있으므로 125의배수는 0이 3개 붙는다.
- 5x5x5x5 나 5x5x5x5x5... 등 수가 있지만 n은 500까지 이므로 125까지 생각한다.
코드
//1676
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char * argv[]) {
cin.tie(NULL);
ios::sync_with_stdio(0);
int num, cnt=0;
string zero;
cin >> num;
for(int i=2;i<=num;i++) {
if( i%5 == 0) cnt++;
if(i%25 == 0) cnt++;
if(i%125 == 0 )cnt++;
}
cout<<cnt;
return 0;
}