前面自己写把砝码一字排开了 然后遍历求和放到set中 看了下题解 没必要
用set存放任意组合的砝码重量和 最后set的大小就是不同的重量数的数
 
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            HashSet<Integer> set = new HashSet<>();
            set.add(0);
            int n = in.nextInt();
            int[] weights = new int[n];
            int[] nums = new int[n];
            for (int i = 0; i < n; i++) {
                weights[i] = in.nextInt();
            }
            for (int i = 0; i < n; i++) {
                nums[i] = in.nextInt();
            }
            for (int i = 0; i < n; i++) {
                ArrayList<Integer> list = new ArrayList<>(set);
                for (int j = 1; j <= nums[i]; j++) {
                    for (Integer l : list) {
                        set.add(l + weights[i] * j);
                    }
                }
            }
            System.out.println(set.size());
        }
    }
}