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();
        	}

        }
    }
}