换啤酒
时间: 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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。