openjudge6049买书

小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元。

问小明有多少种买书方案?(每种书可购买多本)

 

输入一个整数 n,代表总共钱数。(0 <= n <= 1000)输出一个整数ans,代表选择方案种数

样例:

(1) n = 10  ans = 1

(2)n = 15,ans = 0

(3)n = 20, ans = 2

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
    int n;
    int a[5] = {0,10,20,50,100};
    long long dp[1005] = {};
    scanf("%d", &n);
    if(n == 0)
    {
        printf("0");
        return 0;    
    }
    dp[0] = 1;
    for(int i = 1;i <= 4;i++)
    {
        for(int j = a[i];j <= n;j++)
        {
            dp[j] += dp[j - a[i]];
        }    
    }
    printf("%lld", dp[n]);
    return 0;    
}
//此题有一个神奇的隐含条件:就是n % 10 == 0才有解, 否则误解  

 

posted @ 2021-04-16 16:41  Mint-hexagram  阅读(57)  评论(0编辑  收藏  举报