换啤酒

换啤酒

时间: 1ms        内存:128M

描述:

Ject建有n瓶啤酒,全部喝掉之后就有n个啤酒瓶。现在每3个啤酒瓶就可以换1瓶
啤酒。比如,有10瓶啤酒,喝掉之后有10个啤酒瓶,可以换10/3=3瓶啤酒,还剩1
个啤酒瓶,然后再喝掉去换啤酒,共有1+3=4个啤酒瓶,可换4/3=1瓶啤酒,还剩
1+1=2个啤酒瓶。直到换到啤酒瓶不足3个时结束。问:输入n瓶啤酒,以上面这种
换法,最后Ject建一共可以喝掉多少瓶啤酒,还剩几个酒瓶?

输入:

输入一个整数n,n=-1时输入结束。

输出:

对应输出两个整数x,y,即一共喝掉的啤酒x瓶,和剩余y个酒瓶。

示例输入:

11
3
1
-1

示例输出:

16 1
4 1
1 1

提示:

参考答案(内存最优[748]):

#include <stdio.h>
int main()
{
	int n,i,j,x;
while(scanf("%d",&n)!=EOF)
{
	if(n==-1)break;
	x=n;
    while(n!=0)
	{   
		i=n/3;
		j=n%3;
		x=x+i;
		n=i+j;

	if(n<3)break;
	}
	printf("%d %d\n",x,n);
}
return 0;
}

参考答案(时间最优[0]):

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
	int n,x,y;
	while(scanf("%d",&n)!=EOF)
	{
		if(n==-1) break;
		x=n;
		y=0;
		if(n<3) y=n;
		while(n>=3)
		{
			x=x+n/3;
			n=n/3+n%3;
			if(n<3) y=n;
		}
		cout<<x<<' '<<y<<endl;

	}

	return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注