zoukankan      html  css  js  c++  java
  • UVa 147 Dollars 背包



     Dollars 

    New Zealand currency consists of $100, $50, $20, $10, and $5 notes and $2, $1, 50c, 20c, 10c and 5c coins. Write a program that will determine, for any given amount, in how many ways that amount may be made up. Changing the order of listing does not increase the count. Thus 20c may be made up in 4 ways: 1 tex2html_wrap_inline25 20c, 2 tex2html_wrap_inline2510c, 10c+2 tex2html_wrap_inline25 5c, and 4 tex2html_wrap_inline25 5c.

    Input

    Input will consist of a series of real numbers no greater than $300.00 each on a separate line. Each amount will be valid, that is will be a multiple of 5c. The file will be terminated by a line containing zero (0.00).

    Output

    Output will consist of a line for each of the amounts in the input, each line consisting of the amount of money (with two decimal places and right justified in a field of width 6), followed by the number of ways in which that amount may be made up, right justified in a field of width 17.

    Sample input

    0.20
    2.00
    0.00

    Sample output

      0.20                4
      2.00              293
    ----------------------------

    精度............为什么不能直接读double呢orz

    -----------

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    //const int coins[12]={2000,1000,400,200,100,40,20,10,4,2,1};
    const int coins[12]={1,2,4,10,20,40,100,200,400,1000,2000};
    long long f[40000];
    double money;
    int m;
    
    int main()
    {
        memset(f,0,sizeof(f));
        f[0]=1;
        for (int i=0; i<11; i++)
        {
            for (int j=0; j<=6000-coins[i]; j++)
            {
                if (f[j])
                {
                    f[j+coins[i]]+=f[j];
                }
            }
        }
        int a,b;
        //while (~scanf("%lf",&money))
        while (~scanf("%d.%d",&a,&b))
        {
            if (a==0&&b==0) break;
            m=a*20+b/5;
            money=double(a)+double(b)/100;
            printf("%6.2lf",money);
            printf("%17lld\n",f[m]);
        }
        return 0;
    }
    


     Dollars 

    New Zealand currency consists of $100, $50, $20, $10, and $5 notes and $2, $1, 50c, 20c, 10c and 5c coins. Write a program that will determine, for any given amount, in how many ways that amount may be made up. Changing the order of listing does not increase the count. Thus 20c may be made up in 4 ways: 1 tex2html_wrap_inline25 20c, 2 tex2html_wrap_inline2510c, 10c+2 tex2html_wrap_inline25 5c, and 4 tex2html_wrap_inline25 5c.

    Input

    Input will consist of a series of real numbers no greater than $300.00 each on a separate line. Each amount will be valid, that is will be a multiple of 5c. The file will be terminated by a line containing zero (0.00).

    Output

    Output will consist of a line for each of the amounts in the input, each line consisting of the amount of money (with two decimal places and right justified in a field of width 6), followed by the number of ways in which that amount may be made up, right justified in a field of width 17.

    Sample input

    0.20
    2.00
    0.00

    Sample output

      0.20                4
      2.00              293
  • 相关阅读:
    【C/C++】Dijkstra算法的简洁实现
    【数学建模】图论方法的数学模型
    【数学建模】模糊数学模型详解
    【数学建模】基于问题的线性规划和混合整数规划求解
    【机器学习】非常全的机器学习资源汇总
    【数据结构】数据结构中的各种树详解
    【数据结构】八大排序算法
    【数据结构】七大查找算法
    【数学建模】MATLAB语法
    【论文阅读】Sequence to Sequence Learning with Neural Network
  • 原文地址:https://www.cnblogs.com/cyendra/p/3226335.html
Copyright © 2011-2022 走看看