#2564. 硬币

硬币

题目描述

给定 NN 种硬币,其中第i i 种硬币的面值为Ai A_i,共有Ci C_i 个。

从中选出若干个硬币,把面值相加,若结果为 SS,则称“面值 SS 能被拼成”。

求 1∼MM 之间能被拼成的面值有多少个。

输入格式

输入包含多组测试用例。

每组测试用例第一行包含两个整数 NNMM

第二行包含 2NN 个整数,分别表示 A1,A2,,ANA_1,A_2,…,A_NC1,C2,,CNC_1,C_2,…,C_N

当输入用例N N=0,MM=0 时,表示输入终止,且该用例无需处理。

输出格式

每组用例输出一个结果,每个结果占一行。

用例

3 10
1 2 4 2 1 1
2 5
1 4 2 1
0 0
8
4

数据范围

1N100,1M105,1Ai105,1Ci10001≤N≤100, 1≤M≤10^5, 1≤A_i≤10^5, 1≤C_i≤1000

来源

  • POJ1742
  • HDU2844
  • 算法竞赛进阶指南