【2014 Multi-University Training Contest 6】 G. Series 1(n階差分,組合數,大數)


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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章