UVa 11375 - Matches

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();

	}



}

 

你可能感兴趣的:(matches)