用Java大数注意不能预处理组合数数组,会爆内存,而且hdu会给你一个Wrong Answer,而不是Memory Limit Exceed.你不会知道自己错在哪里......
代码:
import java.util.*;
import java.math.*;
public class Main{
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
int T,n;
BigInteger c[] = new BigInteger [3020];
T = cin.nextInt();
while((T--)!=0){
n = cin.nextInt();
for(int i=1;i<=n;++i)
c[i] = cin.nextBigInteger();
BigInteger sum = c[n];
int flag = 0;
BigInteger use = BigInteger.valueOf(1);
for(int i=n-1;i>=1;--i){
use = use.multiply(BigInteger.valueOf(i)).divide(BigInteger.valueOf(n-i));
BigInteger Big = use.multiply(c[i]);
if(flag==1){
sum=sum.add(Big);
flag=0;
}
else{
sum=sum.subtract(Big);
flag=1;
}
}
System.out.println(sum);
}
}
}