找零钱

题目描述

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

输入

输入有多组,每组一行,为一个整数 nnn。

输入以 0 结束。

输出

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

输入输出样例

样例输入 #1

1
4
0

样例输出 #1

1
3
#include<bits/stdc++.h>
using namespace std;
int n,m,f[255][101],a[7]={1,2,5,10,20,50,100};//数组一定要多开哦
int main()
{
    f[0][0]=1;
    for(int i=0;i<7;i++)
        for(int j=a[i];j<=250;j++)
            for(int k=1;k<=100;k++)
               f[j][k]+=f[j-a[i]][k-1];
        int ans[1000]={0};
    for(int i=1;i<=250;i++)
        for(int j=0;j<=100;j++) ans[i]+=f[i][j];
    while(cin>>n&&n) cout<<ans[n]<<endl;
    return 0;
}

 

 
posted @ 2023-06-11 17:28  o-Sakurajimamai-o  阅读(26)  评论(0)    收藏  举报
-- --