1.规则:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给lin元,可以喝多少瓶汽水。
2:思路:方法1:换取条件为至少具有2个空瓶,lin元可购买(lin/1)瓶汽水,之后可得到(lin/1)个空瓶,
每次可获得(空瓶数/2)瓶新汽水,考虑购买时空瓶数可能并不是2的倍数,新空瓶数=空瓶数/2+空瓶数%2,
需多次遍历,可利用循环实现。
方法2(找规律):设lin={1,2,3,4,5,6,7,8,9,10},总瓶数={1,3,5,7,9,11,13,15,17,19}
由此可见总瓶数为等差数列,可通过数学公示an=a1+(n-1)d得到an=2n-1。
3.实现换汽水问题:
方法1:
#include<stdio.h>
int main()
{
int lin = 0,sum=0,str=0;//lin汽水数、sum总瓶数、str空瓶数
printf("请输入汽水数:");
scanf("%d", &lin);
sum = lin;
str = lin;
while (str > 1) {
sum += str / 2;
str = str / 2 + str % 2;
}
printf("喝掉汽水数:%d\n", sum);
return 0;
}
方法2:找规律(等差数列)
#include<stdio.h>
int main()
{
int lin = 0,sum=0,str=0;//lin汽水数、sum总瓶数、str空瓶数
printf("请输入汽水数:");
scanf("%d", &lin);
sum = lin;
str = lin;
if(str <= 0)
{
sum = 0;
}
else
{
sum = lin*2-1;
}
printf("喝掉汽水数:%d\n", sum);
return 0;
}