题目描述
Z同学为了实现暑假去云南旅游的梦想,决定以后每天只消费1元,每花k元就可以再得到1元,一开始Z同学有M元,问最多可以坚持多少天。
输入
输入2个整数M, k,(2 <= k <= M <= 1000)。
输出
输出一个整数,表示M元可以消费的天数。
样例输入
4 3
样例输出
5
代码如下;
#include<stdio.h>
int main()
{
int m,k,K=0;//定义K为用到k元的次数
int i;
scanf("%d%d",&m,&k);
for(i=1;;i++)
{
m=m-1;//每天花费一元
K++;//花费一元K就加1
if(k==K)//当k=K时得到一块钱,K归0重新计算
{
m=m+1;
K=0;
}
if(m==0)//当总钱数为0时有两种情况
{
if(k==K)//当钱花完看好花费的k元=K元,那就再次得到一元
{
m=m+1;
}
else//反之结束
break;
}
}printf("%d",i);//通过计算循环次数直到结束来得到钱花费的天数
}
这道题关键在于当花费钱数=额定花费钱数而且总钱数为0的时候,这时候又可以再得到1元。
通过在纸上举例可以得出以下几组数据:
输入:3 2
输出:5
输入:5 3
输出:7
输入:6 2
输出:11
由此可以进一步检验代码正确性