코딩테스트 연습/Baekjoon

[Baekjoon] 1676번: 팩토리얼 0의 개수 (c++)

수기 2022. 3. 31. 19:49

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

 

1676번: 팩토리얼 0의 개수

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

  1. 끝자리 수가 2x5=10, 2x2x5=20, 2x2x5x5=100.. 등 5의배수의 개수에 따라 끝자리수0이 더해진다.
  2. 25는 5x5로 5를 2번 사용, 그리고 앞에 2가 2번이상 있으므로 25의배수는 0이2개 붙는다.
  3. 125는 5x5x5로 5를 3번 사용, 앞에 2가 3번이상 있으므로 125의배수는 0이 3개 붙는다.
  4. 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;
}