找零钱

来源:互联网 发布:淘宝怎么改差评 编辑:程序博客网 时间:2024/04/29 05:28

描述

我们知道人民币有1、2、5、10、20、50、100这几种面值。
现在给你n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。
比如4元,能用4张1元、2张1元和1张2元、2张2元,三种表示方法。

输入

输入有多组,每组一行,为一个整合n。
输入以0结束。

输出

输出该面额有几种表示方法。

样例输入

1
4
0

样例输出

1
3

#include<stdio.h>int a[252]={1,1,2,2,3,4,5,6,7,8,11,12,15,16,19,22,25,28,31,34,41,44,51,54,61,68,75,82,89,96,109,116,129,136,149,162,175,188,201,214,236,249,271,284,306,328,350,372,394,416,451,473,508,530,565,600,635,670,705,740,793,828,881,916,969,1022,1075,1128,1181,1234,1311,1364,1441,1494,1571,1648,1725,1802,1879,1956,2064,2141,2249,2326,2434,2542,2650,2758,2866,2974,3121,3229,3376,3484,3631,3778,3925,4072,4219,4366,4563,4709,4905,5051,5247,5442,5637,5832,6027,6221,6476,6669,6924,7116,7369,7622,7875,8127,8378,8628,8954,9202,9526,9772,10094,10415,10735,11054,11371,11686,12093,12406,12810,13119,13520,13920,14318,14713,15106,15497,15998,16384,16880,17262,17754,18243,18729,19212,19692,20169,20776,21246,21847,22311,22905,23495,24081,24663,25240,25812,26539,27103,27821,28375,29083,29786,30483,31174,31859,32538,33398,34065,34913,35567,36401,37228,38048,38859,39662,40458,41465,42245,43234,43997,44970,45933,46885,47828,48762,49686,50851,51754,52899,53781,54903,56013,57111,58197,59271,60332,61671,62705,64018,65026,66309,67578,68833,70073,71296,72503,74029,75206,76699,77839,79297,80738,82159,83562,84944,86308,88035,89360,91045,92327,93970,95593,97191,98768,100318,101850,103791,105272,107162,108595,110434,112250,114034,115795,117525,119231,121396,123044,125152,126740,128786,130806,132787,134743,136660,138547,140953};int main(){    int n;    while(scanf("%d",&n)&&n)    {        printf("%d\n",a[n]);    }   return 0;}/*#include<iostream>#include<cstdio>using namespace std;int any[8]={0,1,2,5,10,20,50,100};long int dp[8][252];int main(){    for(int i=0;i<8;i++)    {        dp[i][0]=1;         dp[i][1]=1;    }    for(int i=0;i<251;i++)    {        dp[0][i]=1;        dp[1][i]=1;    }    for(int i=2;i<=7;i++)    for(int j=2;j<251;j++)    {        if(j>=any[i])            dp[i][j]=dp[i][j-any[i]]+dp[i-1][j];        else            dp[i][j]=dp[i-1][j];    }    int n;    while(~scanf("%d",&n)&&n)        printf("%ld\n",dp[7][n]);    return 0;}*/


0 0
原创粉丝点击