解题思路:
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;
}

别忘点赞哦-.-

点赞(18)
 

0.0分

10 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 5 条评论

Coca-Cola 2年前 回复TA
#include<iostream>
using namespace std;
int main()
{
    int a,i,j,k,s=0;
    cin>>a;
    for(i=1;i<=a/5;i++)
       for(j=1;j<=a/2;j++)
          {
              if(a-i*5-j*2>0)
                s++;
          }
    cout<<s;
}也可以直接后面用所有的钱减五块的和两块的还大于1的
月儿会弯 3年前 回复TA
因为是大佬啊
九三 3年前 回复TA
这个人是真的强!!!
刘靖洋 4年前 回复TA
你为什么这么强
Mark11 6年前 回复TA
你为什么能这么强?