hsk


私信TA

用户名:dotcpp0644469

访问量:2584

签 名:

有志者,事竟成

等  级
排  名 2701
经  验 2106
参赛次数 0
文章发表 23
年  龄 0
在职情况 学生
学  校 河南科技大学
专  业 新一代电子信息技术

  自我简介:

解题思路:

大致思路题目中已经给出,这里不再赘述,只讲如何具体实现:

假设有 n 个空瓶子,我们假定先将这 n 个空瓶子尽可能的全部换成饮料,设可以换成 m 瓶饮料,此时未使用的空瓶子个数为 n-m 个,

未使用的空瓶子个数(n-3*m) + m 瓶饮料可以换成的空瓶子(m)为此轮过程所剩到的空瓶子数,也就是下轮开始时的新空瓶子数;

当所剩瓶子数大于等于2时,循环可以继续进行,当所剩瓶子数为 2 时,就只能再换一瓶饮料了,循环结束;

所需变量:

输入的空瓶数:n;

每轮循环中可以换得的饮料数(同样是所换饮料产生的空瓶子数):tt;

循环过程中兑换的饮料总数:temp;

每轮循环后所剩的空瓶子数(同样是下轮循环新的空瓶子数):res;

参考代码:

//题目 1072: 汽水瓶
#include using namespace std;
int chuli(int n)
{
	int temp=0;
	int res=n;
	int tt=0;
	//剩余两个依然可以找老板借 
	while(res>=2)
	{
		//tt是一个及其关键的数据,用来存放上次剩的空瓶子可以再换几瓶(同样还剩几个空瓶子) 
		tt = res/3;
		//temp是可以换几瓶 
		temp += tt;
		//未使用的空瓶子数 
		res = res%3;
		//换的新的瓶子又是新瓶子 
		res += tt; 
		//此时的res就是换完喝完一次还剩的瓶子 ,这一行代码没有意义 
		res=res;
		//处理res=2时的情况,比较特殊
		if(res==2)
		{
			temp+=1;
			res=0;
		}
	}
	return temp;
}

int main(){
	int n;
	while(cin>>n)
	{
		if(n==0)
		{
			break;
		}
		//用来存储结果 
		int result=0;
		//开始处理
		result=chuli(n);
		cout<<result<<endl; 
	}

	return 0;
}

感谢大家的阅读,如果感觉对您有帮助,请动动小手点个赞呗!

 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区