Money Systems

来源:互联网 发布:thinkphp视频网站源码 编辑:程序博客网 时间:2024/05/29 12:35
【问题描述】
母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统。[In their own rebellious way],,他们对货币的数值感到好奇。
传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单位面值组成的。
母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值。
举例来说, 使用一个货币系统 {1,2,5,10,...}产生 18单位面值的一些可能的方法是:18x1, 9x2, 8x2+2x1, 3x5+2+1,等等其它。写一个程序来计算有多少种方法用给定的货币系统来构造一定数量的面值。保证总数将会适合long long (C/C++) 和 Int64 (Free Pascal)。
【输入文件】
货币系统中货币的种类数目是 V (1<= V<=25)。要构造的数量钱是 N (1<= N<=10,000)。
第 1 行: 二整数, V 和 N
第 2 行: 可用的货币 V 个整数。
【输出文件】
单独的一行包含那个可能的构造的方案数。
【输入样例】
3 10
1 2 5
【输出样例】
10
#include<stdio.h>int main(){   int m,n;   int i,j,b[30];   __int64 a[10000]={0};   scanf("%d%d",&m,&n);   for (i=1;i<=m;i++)   scanf("%d",&b[i]);   a[0]=1;   for (i=1;i<=m;i++)     for (j=b[i];j<=n;j++)  a[j]+=a[j-b[i]]; printf("%I64d",a[n]); return 0;}

0 0