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 !
    就算天再高,那又怎样,踮起脚尖,就可以更靠近阳光!
  • 相关阅读:
    A1066 Root of AVL Tree (25 分)
    A1099 Build A Binary Search Tree (30 分)
    A1043 Is It a Binary Search Tree (25 分) ——PA, 24/25, 先记录思路
    A1079; A1090; A1004:一般树遍历
    A1053 Path of Equal Weight (30 分)
    A1086 Tree Traversals Again (25 分)
    A1020 Tree Traversals (25 分)
    A1091 Acute Stroke (30 分)
    A1103 Integer Factorization (30 分)
    A1032 Sharing (25 分)
  • 原文地址:https://www.cnblogs.com/dreamapple/p/3092577.html
Copyright © 2011-2022 走看看