PKU 1454 Factorial Frequencies
http://poj.org/problem?id=1454
多倍長して数える。
自作の多倍長だとTLEを免れられないのでまたjavaに。
範囲の勘違いとかで何回かREやPEしました。
import java.math.BigInteger; import java.util.*; public class Main { public static BigInteger[] dp=new BigInteger[367]; public static void main(String args[]) throws Exception { Scanner cin=new Scanner(System.in); dp[1]=new BigInteger("1"); for(int i=2;i<367;i++){ dp[i]=dp[i-1].multiply(new BigInteger(String.valueOf(i))); } while(cin.hasNextInt()){ int b=cin.nextInt(); if(b==0)break; String str=dp[b].toString(); int[] arr=new int[100]; for(int i=0;i<str.length();i++)arr[str.charAt(i)]++; System.out.println(b+"! --"); for(int i='0';i<='9';i++){ if(i!='0' && i!='5')System.out.print(' '); System.out.print(" ("+(i-48)+")"); System.out.printf("%5d", arr[i]); if(i=='4' || i=='9')System.out.println(); } } } }