#SLT10A. 2026年S组模拟赛10连测第10场-T1 零钱包

2026年S组模拟赛10连测第10场-T1 零钱包

项目 内容
输入文件名 coins.in
输出文件名 coins.out
可执行文件名 coins
每个测试点时限 1.0 秒
内存限制 512 MiB
测试点数目 20
是否等分 是

结果比较方式为全文比较(过滤行末空格及文末换行)。

题目描述

程老师的零钱包里只有五种硬币,面额分别是 11 元、55 元、1010 元、2020 元、5050 元。出门摆摊前,每种面额各带多少枚是定好的,记在账本上:11 元硬币 c1c_1 枚、55 元硬币 c2c_2 枚、1010 元硬币 c3c_3 枚、2020 元硬币 c4c_4 枚、5050 元硬币 c5c_5 枚。

每来一笔生意,程老师要从零钱包里取出若干枚硬币,凑出恰好等于货款 xx 元的金额交给顾客。付钱的规矩只有一条:从最大的面额开始,每种面额尽可能多取。具体地说,先看 5050 元面额,在不超过当前剩余待凑金额、也不超过钱包里该面额现有枚数的前提下,能取几枚就取几枚;扣掉这些硬币后,再看 2020 元面额,同样尽可能多取;接着依次是 1010 元、55 元、11 元。若这一轮取完,取出的硬币总额恰好是 xx 元,这笔生意就成交,这些硬币从此不再放回钱包;若凑不出正好 xx 元,这笔生意就不成交,刚才取出的硬币全部放回钱包,钱包恢复成这笔生意开始前的样子。

一天的生意按时间顺序记在流水本上,一共 qq 笔。请按流水本的顺序逐笔处理,算出其中有多少笔生意能够成交。

输入格式

从文件 coins.in 中读入数据。

  • 第一行五个整数 c1,c2,c3,c4,c5c_1, c_2, c_3, c_4, c_5,依次表示 11 元、55 元、1010 元、2020 元、5050 元硬币的枚数;
  • 第二行一个整数 qq,表示流水本上生意的笔数;
  • 第三行 qq 个整数 x1,x2,…,xqx_1, x_2, \dots, x_q,依次表示每笔生意的货款。

输出格式

输出到文件 coins.out 中。

  • 输出一行一个整数,表示成交的生意笔数。

样例

3 1 1 0 0
3
16 3 20
1

样例 1 解释

钱包里是 11 元 33 枚、55 元 11 枚、1010 元 11 枚。

第一笔货款 1616 元:先看 5050 元,取不了;再看 2020 元,取不了;再看 1010 元,可取 11 枚,剩 66 元;再看 55 元,可取 11 枚,剩 11 元;最后 11 元取 11 枚,正好取完。成交,钱包变成 11 元 22 枚、55 元 00 枚、1010 元 00 枚。

第二笔货款 33 元:55 元及以上面额都取不了,11 元只有 22 枚,取出后还差 11 元,不成交,硬币放回,钱包不变。

第三笔货款 2020 元:1010 元、55 元都已取光,11 元 22 枚也不够,不成交。

三笔中成交一笔。

0 2 0 0 0
2
10 7
1

样例 2 解释

钱包里只有 55 元硬币 22 枚。第一笔货款 1010 元,55 元面额可取 22 枚,正好取完,成交;此后钱包为空。第二笔货款 77 元,钱包里没有硬币可取,不成交。

5 0 0 3 1
1
60
0

样例 3 解释

第一笔货款 6060 元:5050 元面额可取 11 枚,剩 1010 元;2020 元面额一枚也取不了(取一枚就是 2020 元,超过剩下的 1010 元);1010 元面额没有硬币;55 元面额没有硬币;11 元面额有 55 枚,全部取出后仍差 55 元。凑不出正好 6060 元,不成交。

数据范围

对于所有测试数据,保证:

  • 0≤ci≤1040 \le c_i \le 10^4;
  • 1≤q≤1051 \le q \le 10^5;
  • 1≤xi≤1041 \le x_i \le 10^4。

各测试点的约束如下:

测试点 qq xix_i 特殊性质
1∼21\sim2 ≤5\le 5 ≤20\le 20 无
3∼63\sim6 ≤50\le 50 ≤100\le 100
7∼107\sim10 ≤2000\le 2000 ≤104\le 10^4
11∼1411\sim14 ≤104\le 10^4
15∼1815\sim18 ≤105\le 10^5
1919 A
2020 B
  • 特殊性质 A:c1=0c_1 = 0,即钱包里没有 11 元硬币;
  • 特殊性质 B:所有 xix_i 都是 55 的倍数。
难度 未评定
通过率 —
尝试 0
通过 0
ID
3805
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者