• hdu 1284 分硬币 && uva 147


    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        unsigned long long int dp[32780];
        memset(dp,0,sizeof(dp));
        dp[0]=1;
        for(int i=1;i<=3;i++)
            for(int j=i;j<32780;j++)
                dp[j]=dp[j]+dp[j-i];
        int n;
        while((scanf("%d",&n))!=EOF)
        {
            printf("%I64d
    ",dp[n]);
        }
        return 0;
        return 0;
    }
    View Code

     

    这两道题基本思路是一样的,不过uva147的输出实在是个大坑,因为double的问题,所以考虑精度的损失。

    代码中的输出部分被我注释掉的那一部分是错误的输出,格式什么的都是正确的,但是存在精度的损失。应该注意一下

    hdu1284

     

    Description

    在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
     

    Input

    每行只有一个正整数N,N小于32768。
     

    Output

    对应每个输入,输出兑换方法数。
     

    Sample Input

    2934 12553
     

    Sample Output

    718831 13137761
     
     
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        unsigned long long int dp[30005];
        int money[]={10000,5000,2000,1000,500,200,100,50,20,10,5};
        memset(dp,0,sizeof(dp));
        dp[0]=1;
        //cout<<money[10]<<endl;
        for(int i=10;i>=0;i--)
        {
            for(int j=money[i];j<30005;j++)
    
            {
                dp[j]=dp[j-money[i]]+dp[j];
            }
        }
        //cout<<dp[0]<<dp[5]<<dp[10]<<dp[15]<<endl;
        double n;
    
        //cin>>n;
        //cout<<dp[5]<<endl;
        //cout<<dp[10020]<<endl;
        int a,b;
        while((scanf("%d.%d",&a,&b))!=EOF&&a+b)
         {
              /*  n=n*100;
                cout<<n;
                int m=n;
         printf("%6.2lf%17I64d
    ",n/100,dp[m]);*/
             int n=a*100+b;//cout<<n<<endl;
        double ans=n*1.0/100.0;
        printf("%6.2lf%17lld
    ",ans,dp[n]);
         }
    
        return 0;
    }
    View Code
    uva 147

    Description

    Download as PDF
     

    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_inline25 10c, 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
     
    dp[j]=dp[j]+dp[j-i],j表示钱数,i表示价值。首先i=1,这样得到不同的钱数被全部分为1的硬币的兑换法,然后把大于2的数分解为 2+i,即2+i的钱分为一个2加第i个钱全部
    为1的分法,这么递推下去。
  • 相关阅读:
    MIPS笔记
    花生壳动态域名解析工具原理
    SEE MIPS RUN 第六章 内存管理与TLB
    C/C++动态内存创建与内存管理
    ngclass 用法
    看了一个烟花的html作品 引用:http://www.w3cfuns.com/blog54440495404365.html
    ngclip angualr 的copy功能
    学习技术的方法
    restful restAPI 的定义方式
    我与计算机
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/5302255.html
Copyright © 2020-2023  润新知