【♂Not The Triumph♂O(∩_∩)O哈哈~But The Struggle♂】

竞赛决不是捷径,它只是另一种艰辛的生活方式。得到与失去,只有时间会去评判;成功与失败,只有历史能去仲裁。我不会永远成功,正如我不会永远失败一样

  C++博客 :: 首页 :: 联系 ::  :: 管理
  6 Posts :: 239 Stories :: 25 Comments :: 0 Trackbacks

常用链接

留言簿(7)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 104853
  • 排名 - 233

最新评论

阅读排行榜

评论排行榜

母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统。由于他们特殊的思考方式,他们对货币的数值感到好奇。

传统地,一个货币系统是由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),即在0 到2^63-1之间。

格式
PROGRAM NAME: money

INPUT FORMAT:
(file money.in)

货币系统中货币的种类数目是 V (1<= V<=25)。要构造的数量钱是 N (1<= N<=10,000)。

第 1 行: 二整数, V 和 N
第 2 行: 可用的货币的面值 。

OUTPUT FORMAT:
(file money.out)

单独的一行包含那个可能的用这v种硬币凑足n单位货币的方案数。

SAMPLE INPUT
3 10
1 2 5

SAMPLE OUTPUT
10

【参考程序】:

/*
ID: XIONGNA1
PROG: money
LANG: C++
*/
#include
<iostream>
#include
<cstring>
using namespace std;
long long f[10001];
int n,v,x;
int main()
{
    freopen(
"money.in","r",stdin);
    freopen(
"money.out","w",stdout);
    scanf(
"%d%d",&v,&n);
    memset(f,
0,sizeof(f));
    f[
0]=1;
    
for (int i=1;i<=v;i++)
    {
        scanf(
"%d",&x);
        
for (int j=x;j<=n;j++) f[j]+=f[j-x];
    }
    printf(
"%lld\n",f[n]);
    
return 0;
}
posted on 2009-07-20 11:21 开拓者 阅读(334) 评论(0)  编辑 收藏 引用 所属分类: USACO 题解

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理