【题目链接】
ybt 2059:【例3.11】买笔
本题条件欠缺,我们做此题时添加如下条件:
剩余班费x > 0
买笔数量确定时,尽量多买更贵的笔。
【题目考点】
1. if…else if语句
【解题思路】
要想多买笔,要尽量多买便宜的那一款。把x元用来买4元的笔,能买x/4个4元的笔。假设买后剩下y元。
- 如果y为0,那么不做操作。
- 如果y为1,那么将一支4元的笔换做5元的。
- 如果y为2,那么将一支4元的笔换做6元的。
- 如果y为3,那么将一支4元的笔换做6元的,一支4元的笔换做5元的。
【题解代码】
解法1:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int x, n4 = 0, n5 = 0, n6 = 0;//n4,n5,n6:4元,5元,6元笔的个数
cin >> x;
if(x > 4)//如果剩下的班费小于4元,也就不用买笔了
{
n4 = x/4;
x %= 4;//此时x为买4元笔剩下的钱,只能为0,1,2,3
if(x == 1)
{//4元笔换5元
n5++;
n4--;
}
else if(x == 2)
{//4元笔换6元
n6++;
n4--;
}
else if(x == 3)
{//4元笔换6元
n6++;
n4--;
if(n4 > 0)
{//如果还有4元笔,那么换为5元的,否则不换了
n5++;
n4--;
}
}
}
cout << n6 << ' ' << n5 << ' ' << n4;
return 0;
}