求200!: public class j200{ public static void main(String args[]){ int i,j,k; long[] num=new long[50]; long[] num1=new long[50]; for(i=0;i<50;i++) num[i]=0; num[0]=1; long n=1000000000000000000L; for(i=2;i<=200;i++){ for(k=0;k<50;k++){ num1[k]=num[k]; } for(j=1;j<=i-1;j++){ for(k=0;k<50;k++){ num[k]+=num1[k]; } for(k=0;k<49;k++){ if(num[k]>=n){ num[k+1]+=num[k]/n; num[k]%=n; } } } } for(i=49;i>=0;i--){ StringBuffer sb=new StringBuffer(); int amount=sb.append(num[i]).length(); System.out.println("000000000000000000".substring(0,18-amount)+num[i]); } } }