PKU 1401-Factorial

問題概要

N!の最後につく0の数を求めよ

解法

N!を素因数分解したときの2^a 5^bのmin(a,b)が0の個数になる.
ここで,明らかに2の倍数の方が出現頻度が高いのでbだけ考える.
すると,Nが0になるまで5で割っていき,その総和を求めると答えになることが分かる.

実装(C)

#include <stdio.h>
int main() {
	int n,r;
	for(scanf("%d",&n);~scanf("%d",&n);){
		r=0;
		while(n){
			r+=n/5;
			n/=5;
		}
		printf("%d\n",r);

	}
	return 0;
}