原题链接:人民币问题
解题思路:
1.根据百钱百鸡问题,百钱买到一百只鸡,输出方法;
2.这里变为任意钱买钱,只要三种面值的钱都买到,就是成立的买法;
3.每种钱都要买到,故每种钱的初始张数都为1;
4.把有的钱money,先买面值为5的钱,所剩余的钱为:moneyleft_forliangyuan=money-wuyuan*5;
(wuyuan:面值为5的钱的张数)
5.把剩余的钱买面值为2的钱,所剩余的钱为:moneyleft_foryiyuan=moneyleft_forliangyuan-liangyuan*2;
(liangyuan:面值为2的钱的张数)
6.最后把剩下的钱买面值为1的钱,(注意:至少有一张1元),故当moneyleft_foryiyuan>=1时,整个买法成立;
参考代码:
#include<stdio.h> int main() { int money,approach=0; while(scanf("%d",&money)!=EOF) { approach=0; for(int wuyuan=1;wuyuan<=money/5;wuyuan++) { int moneyleft_forliangyuan=money-wuyuan*5; for(int liangyuan=1;liangyuan<=moneyleft_forliangyuan/2;liangyuan++) { int moneyleft_foryiyuan=moneyleft_forliangyuan-liangyuan*2; if(moneyleft_foryiyuan>=1) approach++; } } printf("%d\n",approach); } return 0; }
别忘点赞哦-.-
0.0分
10 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复