hdu 1502 Regular Words_高精度+dp
题意:问按规则排成的串有多少个A(c)>= B(c) >= C(c)
思路:因为写大整数太累,就偷懒了一下直接用java水过
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args){ BigInteger [][][]dp=new BigInteger [65][65][65]; dp[0][0][0]=BigInteger.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]=BigInteger.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 cin=new Scanner(System.in); while(cin.hasNext()){ int x=cin.nextInt(); System.out.println(dp[x][x][x]); System.out.println(); } } }
不怕路长,只怕心老.