给你一个n种面值的货币系统,求组成面值为m的货币有多少种方案。样例:设n=3,m=10,要求输入和输出的格式如下:
输入
第一行两个整数n,m(m<=5000)
以下n行,每行一个整数,第i+1行为第i种货币的面值
以下n行,每行一个整数,第i+1行为第i种货币的面值
输出
一个整数,为方案数
样例输入
3 10
1
2
5
样例输出
10
#include<stdio.h>
#include<string.h>
int
a[10005];
long
long
f[10005];
int
main(){
int
n, m, i, j;
while
(
scanf
(
"%d%d"
, &n, &m) != EOF){
memset
(f, 0,
sizeof
(f));
f[0] = 1;
for
(i = 1; i <= n; i++)
scanf
(
"%d"
, &a[i]);
for
(i = 1; i <= n; i++)
for
(j = a[i]; j <= m; j++)
f[j] += f[j - a[i]];
printf
(
"%lld\n"
, f[m]);
}
return
0;
}