博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CCF NOI1034 钞票兑换
阅读量:6072 次
发布时间:2019-06-20

本文共 1283 字,大约阅读时间需要 4 分钟。

问题链接


时间限制: 1000 ms  空间限制: 262144 KB

题目描述 

  将任意给定的整百元钞票,兑换成10元、20元、50元小钞票形式。输出兑换方案总数。

输入

  输入需要兑换的钞票总数n。

输出

  输出方案总数。

样例输入

100

样例输出

10

数据范围限制

  100<=n<=1000000

提示

  方案序号10元张数20元张数50元张数100220503121424053116430750186209810101000


问题分析

  只有三种币种,最大面额的定了,其方案数就可以直接算了

程序说明

  程序采用试探法的逻辑计算结果。

要点详解

  • 使用宏定义可以使得代码可阅读性增强。


参考链接:(略)。

100分通过的程序:

#include 
#define BILL50 50#define BILL20 20#define BILL10 10int main(void){ int n, count, i, end; scanf("%d", &n); count = 0; end = n / BILL50; for(i=0; i<=end; i++) count += (n - i * BILL50) / BILL20 + 1; printf("%d\n", count); return 0;}

100分通过的程序(考虑所有组合,速度慢逻辑繁杂):

#include 
#define BILL50 50#define BILL20 20#define BILL10 10int main(void){ int n, count, i, j, end1, end2; scanf("%d", &n); count = 0; end1 = n / BILL50; for(i=0; i<=end1; i++) { if(i * BILL50 == n) { count++; continue; } end2 = (n - i * BILL50) / BILL20; for(j=0; j<=end2; j++) { if(i * BILL50 + j * BILL20 == n) { count++; continue; } if((n - i * BILL50 - j * BILL20) % BILL10 == 0) count++; } } printf("%d\n", count); return 0;}

转载于:https://www.cnblogs.com/tigerisland/p/7563868.html

你可能感兴趣的文章
2:基本操作:全局显示/操作为漫游/选择/刷新
查看>>
在iOS下使用字体时关于字体名字的问题
查看>>
android获取软件列表
查看>>
原来fastboot boot custom.img可以无需刷机就以启动定制系统(以root)
查看>>
Android 处理调用系统相机生成的被旋转图片
查看>>
修改系统tabbar的高度
查看>>
Git 使用指南
查看>>
背景透明,文字不透明
查看>>
如何删除MYSQL表中的重复数据
查看>>
js中的replace用法
查看>>
Java基础学习总结——Java对象的序列化和反序列化
查看>>
Hadoop集群安装配置教程
查看>>
Android面试题目及其答案
查看>>
node上server与client通讯
查看>>
java源码分析 arraylist 增长机制
查看>>
PLSQL Developer使用技巧
查看>>
oracle库文件建立完整数据库的过程介绍
查看>>
使用系统相机拍照摄像
查看>>
万能字段使用技巧整理
查看>>
session使用
查看>>