8P - 钱币兑换问题

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

Input

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

Output

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

Sample Input

2934
12553

Sample Output

718831
13137761

// 第一层循环:控制3分硬币的个数;第二层循环:控制2分硬币的个数;若此时总值未超过N,计数器+1
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n, c, i, j;
 5     while(~scanf("%d", &n))
 6     {
 7         c=0;
 8         for(i=0;i<=n/3;i++)
 9             for(j=0;j<=n/2;j++)
10             {
11                 if(n-3*i-2*j>=0)
12                     c++;
13                 else break;
14             }
15         printf("%d\n", c);
16     }
17     return 0;
18 }
Time Limit Exceeded
// 详见代码
 1 #include<stdio.h>
 2 // 3分钱,2取种,1补值. 
 3 int main()
 4 {
 5     int n, c, i;
 6     while(~scanf("%d", &n)) // n=x1+2*x2+3*x3.
 7     {
 8         c=n/3+1;            // 全用1分兑换 +1. 每3=1+2 +1,不够1分凑. 
 9         for(i=0;i<=n/3;i++)
10             c+=(n-3*i)/2;    // 先用3分兑换部分,剩下的每2=1+1 +1,不够1分凑. 
11         printf("%d\n", c);
12     }
13     return 0;
14 }
AC

 

转载于:https://www.cnblogs.com/goldenretriever/p/10355719.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值