解题思路:此题最好建立一个数学模型,说白了就是列个表看出它的规律,剩下的就好解的多了。
你拥有的空瓶 | 能够换得的总瓶数 | 剩下的空瓶 |
1 | 0 | 1 |
2 | 1 | 0 |
3 | 1 | 1 |
4 | 2 | 0 |
5 | 2 | 1 |
6 | 3 | 0 |
7 | 3 | 1 |
8 | 4 | 0 |
... | ... | ... |
不难看出,因为如果剩下两个空瓶的话就可以借一瓶喝完还回去,所以最后剩下空瓶的只可能是一个或者
没有。
再看每拥有的空瓶能换的瓶数。单数的则为(n-1)/2,双数的为n/2。
接下来就开始编写程序。
注意事项:
参考代码:
#include<stdio.h>
int bottle(a);
int main()
{
int n[10];//最多测试十组数据
int i=0;
scanf("%d",&n[0]);//先输入一个然后让下面while进行判断。
while(n[i]!=0){
i++;
scanf("%d",&n[i]);
}//这里建议先看下面的函数
for(int j=0;j<=i;j++)
{
if(bottle(n[j])!=0)//最后以0结尾,所以判断是不是等于0,如果等于则不输出,程序结束。
printf("%d\n",bottle(n[j]));
}
return 0;
}
int bottle(a){
if(a%2==0)//判断输入的数是奇数还是偶数,然后用之前建立模型所得出的公式套用
return a/2;
return (a-1)/2;
}
0.0分
2 人评分
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:1084 |
众数问题 (C语言代码)浏览:911 |
简单的a+b (C语言代码)浏览:560 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:583 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:561 |
DNA (C语言代码)浏览:798 |
剪刀石头布 (C++代码)浏览:1811 |
IP判断 (C语言代码)浏览:592 |
震宇大神的杀毒软件 (C语言代码)浏览:1162 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:692 |