Problem B HDU5686 高精度 排列组合

 易得知 答案为 对于方程 2x+y=n的每个正整数解的 关于x,y的全排列,这里用到全排列公式

 由于答案会很大 ,考虑java高精度

import java.util.*;
import java.math.*;

public class Main {
       public static void main(String[] args) {
           Scanner in=new Scanner(System.in);
           
           BigInteger[] f=new BigInteger[205];
           f[0]=BigInteger.valueOf(1);
           BigInteger tmp;
           for(int i=1;i<=200;i++) {
               tmp=BigInteger.valueOf(i);
               f[i]=f[i-1].multiply(tmp);
           }
           int n;
           BigInteger ans;
           while(in.hasNext()) {
               n=in.nextInt();
               ans=BigInteger.valueOf(0);
               for(int x=0;x<=n/2;x++) {
                   //System.out.println(f[x]);
                   ans=ans.add((f[n-x].divide(f[x].multiply(f[n-2*x]))));
               }
               System.out.println(ans);
           }
           in.close();
       }
}
原文地址:https://www.cnblogs.com/hznumqf/p/12509429.html