SZ#G6KP14. 【GESP强化 六级】硬币组合 I

提交1 通过1
通过率100%
时间限制2000ms
内存限制256MiB
    ID: 11558 传统题 2000ms 256MiB 尝试: 1 已通过: 1 难度: 入门 上传者: 标签>GESPGESP强化C++c++编程题背包问题完全背包方案计数1星

题目描述

有一个包含 nn 种硬币的货币系统,每种硬币都有一个正整数面值,并且每种硬币都可以使用任意多枚。你的任务是统计用这些硬币凑出金额 xx 的不同方案数。在本题中,硬币排列顺序不同的方案也被视为不同方案。

例如,硬币面值为 {2,3,5}\{2,3,5\},目标金额为 99 时,共有下面 88 种方案:

  • 2+2+52+2+5
  • 2+5+22+5+2
  • 5+2+25+2+2
  • 3+3+33+3+3
  • 2+2+2+32+2+2+3
  • 2+2+3+22+2+3+2
  • 2+3+2+22+3+2+2
  • 3+2+2+23+2+2+2

输入格式

第一行包含两个整数 n,xn,x,分别表示硬币种类数和目标金额。

第二行包含 nn 个互不相同的整数 c1,c2,,cnc_1,c_2,\ldots,c_n,表示各种硬币的面值。

输出格式

输出方案数对 109+710^9+7 取余后的结果。

3 9
2 3 5
8
2 13
5 11
0
3 16
5 1 6
116

说明/提示

数据范围与约定

  • 1n1001\le n\le100
  • 1x1061\le x\le10^6
  • 1ci1061\le c_i\le10^6