POJ 1454 - Factorial Frequencies
http://poj.org/problem?id=1454
概要
\(n!\) を十進表記したときに各数字が何回現れるかを Sample Output のような形式で答える。
制約
- \(1 \le n \le 366\)
解法
やるだけ。
poj/1454.java1 import java.util.*; 2 import java.math.*; 3 4 public class Main { 5 public static void main(String[] args) { 6 Scanner cin = new Scanner(System.in); 7 for (int N; (N = cin.nextInt()) != 0;) { 8 int[] ans = solve(N); 9 System.out.printf("%d! --\n", N); 10 for (int i = 0; i < 2; i++) { 11 for (int j = 0; j < 5; j++) { 12 System.out.printf(" (%d) %4d ", 5*i+j, ans[5*i+j]); 13 } 14 System.out.println(""); 15 } 16 } 17 } 18 19 static int[] solve(int N) { 20 int[] ans = new int[10]; 21 BigInteger n = BigInteger.ONE; 22 for (int i = 2; i <= N; i++) { 23 n = n.multiply(BigInteger.valueOf(i)); 24 } 25 char[] s = n.toString().toCharArray(); 26 for (char c : s) { 27 ++ans[c - '0']; 28 } 29 return ans; 30 } 31 }