这道题需要用到大数运算,很机智的想到了java
题意为有n个a,b,c组成的数,其中a的个数不小于b的个数,b的个数不小于c的个数,求排列
递推公式 dp[i][j][k]=dp[i-1][j][k]+dp[i][j-1][k]+dp[i][j][k-1];
import java.math.*;
import java.util.Scanner;
public class Main {
public static void main(String args[]){
BigDecimal [][][]dp=new BigDecimal[65][65][65];
dp[0][0][0]=BigDecimal.ONE;
for(int i=1;i<=60;i++){
for(int j=0;j<=i;j++){
for(int k=0;k<=j;k++){
dp[i][j][k]=BigDecimal.valueOf(0);
if(i>j) dp[i][j][k]=dp[i][j][k].add(dp[i-1][j][k]);
if(j>k) dp[i][j][k]=dp[i][j][k].add(dp[i][j-1][k]);
if(k>0) dp[i][j][k]=dp[i][j][k].add(dp[i][j][k-1]);
}
}
}
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int x= sc.nextInt();
System.out.println(dp[x][x][x]);
System.out.println();
}
}
}