爆破:

1.

设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000)。

现在给你这六种砝码的数量,请你计算用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况。

如输入:1 1 0 0 0 0

输出:Total=3  表示可以称出1g,2g,3g三种不同的重量。

2.

每个测试文件只包含一组测试数据,每组输入六个整数,例如:

输入 a1  a2  a3  a4  a5  a6

      (表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个)

3.

对于每组输入数据,输出 Total=N。(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)

import java.util.Scanner;


public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int arr[] = new int[]{0,1,2,3,5,10,20};
		int num[] = new int[7];
		int Max=1001;
		int top=0;
		int weight[] = new int[Max];
		for(int i=1;i<=6;++i) {
			num[i] = in.nextInt();
			top+=num[i]*arr[i];
		//	System.out.println(top);
		}
		int count=0;
		for(int i=0;i<=num[1];++i)
		{
			for(int j=0;j<=num[2];++j)
			{
				for(int k=0;k<=num[3];++k)
				{
					for(int l=0;l<=num[4];++l)
					{
						for(int m=0;m<=num[5];++m)
						{
							for(int o=0;o<=num[6];++o)
							{
								int sum=i*arr[1]+j*arr[2]+k*arr[3]
										+l*arr[4]+m*arr[5]+o*arr[6];
								weight[sum]=1;
							//	System.out.println("x");
							}
						}	
					}	
				}	
			}
		}
		
	
		for(int i=1;i<=top;++i)
		{
			if(weight[i]==1)
			{
				count+=1;
			}
		}
		System.out.println("Total="+count);
		
	}
}