zoukankan      html  css  js  c++  java
  • 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的分法,这么递推下去。
  • 相关阅读:
    Golang的安装包方法
    Debian kvm网络配置
    Debian-Linux配置网卡网络方法
    KVM虚拟机网络配置 Bridge方式,NAT方式
    WebRTC之框架与接口
    WebRTC
    关于golang.org/x包问题
    http内网转发
    linux服务器可以访问IP访问不了域名地址
    golang--生成某区间的随机数
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/5302255.html
Copyright © 2011-2022 走看看