AOJ0052 Factorial II

問題リンク Factorial II

  • 解法

N! (N<=2*10^9)の演算結果の末尾に0がいくつ並ぶかを求める問題です。
N!を素因数分解したときに10が何回出てくるか(2と5のペアの数)を求めると言いかえられます。
2の数と5の数のうち小さい方が10の登場回数になります。
登場回数は必ず5の方が小さいので、即ち5の登場回数がこの問題の答えです。
「階乗 0の個数」とかで検索かけると色々な解説サイトがあったりします。

  • ソース
import java.util.Scanner;

//Factorial II
public class AOJ0052 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(true){
			int n = sc.nextInt();
			if(n==0)break;
			int c = 0;
			while(n>=5){
				c += n/5;
				n/=5;
			}
			System.out.println(c);
		}
	}
}