1,题目描述:已知一瓶汽水1元,两个空瓶可以换一瓶汽水,输入整数n(n>=0),表示n元钱,计算最终可以喝多少瓶汽水。
2,解题思路:
2.1主体思路:我们需要尽可能地用空瓶子去换汽水,直到剩余的空瓶子不足以再换一瓶汽水。
2.2具体的实现:
1)将全部的n元钱全部用来购买汽水,计算出汽水的数量total。
2)每次将剩余的空瓶子empty除以2,表示可以换取的汽水数量,将其加之到total中。
3)每次将剩余的空瓶子empty除以2并且将剩余的空瓶子模2,表示空瓶子empty。
4)重复2)和3)步骤,直到空瓶子的数量小于2,不足以再换一瓶汽水为止。
3,图解分析:
方法一:分析法
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);
int total=n;
int empty=n;
while(empty>1)
{
total=total+empty/2;
empty=empty/2+empty%2;
}
printf("%d\n",total);
return 0;
}
运行结果:
方法二:公式法
#include <stdio.h>
int main()
{
int total=0;
int n=0;
scanf("%d",&n);
if(n==0)
{
printf("%d\n",total);
}
else
{
printf("%d",2*n-1);
}
return 0;
}
运行结果:
以上编译环境均为Dev-c++;
若有错误,欢迎各位小伙伴同我一起交流!!!