zoukankan      html  css  js  c++  java
  • HDU ACM 1284 钱币兑换问题

    题目描述如下:

    钱币兑换问题

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

    Problem Description
    在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
     
    Input
    每行只有一个正整数N,N小于32768。
     
    Output
    对应每个输入,输出兑换方法数。
     
    Sample Input
    2934 12553
     
    Sample Output
    718831 13137761
     
    Author
    SmallBeer(CML)
     
    解题思路:
      开始时,用暴力方法求解,发现时间太长,然后看了别人的评论,可以改变一下算法,不用多重循环,只用一重循环就可以了。
    可以先确定3分钱的数量,假如为N3,(2分钱的数量为N2,1分钱的数量为N1)则,N-3*N3=2*N2+N1;因为,一但3分钱的数量确定了,只剩下1分钱和2分钱的数量,而2分钱的数量和1分钱的数量是一一对应的,所以可有如下代码:
    (C语言版)
      #include<stdio.h>
    int main()
    {
     int i,j,k,ni,nj,nk;
     int n,flag;
     __int64 sum;
     while(scanf("%d",&n)==1)
     {
      sum=0;
      ni=n/3;
      for(i=0;i<=ni;i++)
      {
       sum=sum+((n-3*i)/2+1);
      }
      printf("%I64d\n",sum);
     }
     return 0;
    }
     
    只要坚持不懈,没有什么事情是做不到的!
                                                                                          Never Give Up !
    就算天再高,那又怎样,踮起脚尖,就可以更靠近阳光!
  • 相关阅读:
    iOS7以上自定义一个navigationController,并沿用系统的侧滑返回效果
    判断一个日期是否再某个日期范围内object-c 范例
    统计软件简介
    大学生对vivo手机的看法
    第二次作业,制作调查问卷
    作业一:数据软件系统的介绍及spss的操作简介
    Android WebView
    Android ListView
    ARM和x86
    android shape和selector
  • 原文地址:https://www.cnblogs.com/dreamapple/p/3092577.html
Copyright © 2011-2022 走看看