UVa 11375

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2370

难题锻炼思维,水题锻炼细心。

这个题有两个需要注意的地方

1,关于前导零

2,高精度

代码:

import java.math.BigInteger;
import java.util.Scanner;


public class Main {

	/**
	 * @param args
	 */
	static final int N=2005;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		long c[]={0,0,1,1,1,3,3,1};
		//long [] c = new long[8];
		BigInteger [] sum=new BigInteger[N];
		sum[0]=BigInteger.ONE;
		for(int i=1;i<N;++i){
			sum[i]=BigInteger.ZERO;
		}
		for(int i=2;i<N;++i){
			for(int j=2;j<=7&&i-j>=0;++j){
				sum[i]=sum[i].add(sum[i-j].multiply(BigInteger.valueOf(c[j])));
			}
			if(i==6){
				sum[i]=sum[i].subtract(BigInteger.ONE);
			}
		}
		sum[0]=BigInteger.ZERO;
		sum[6]=sum[6].add(BigInteger.ONE);
		for(int i=1;i<N;++i){
			sum[i]=sum[i].add(sum[i-1]);
		}
		int k;
		Scanner in = new Scanner(System.in);
		while(in.hasNext()){
			k=in.nextInt();
			System.out.println(sum[k]);
		}
		in.close();
	}

}
原文地址:https://www.cnblogs.com/liulangye/p/3174806.html