用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);
}
}
}