计蒜网 喝酒 (模拟)水

喝酒

王大钉喜欢喝酒,存货都喝完了,他就去楼下买,正好楼下的商店为了响应学校的 ACM 校赛推出了优惠活动:凡是在本店买的啤酒,喝完以后 33 个空瓶可以换一瓶,44 个瓶盖也可以换一瓶酒。

王大钉觉得太合算了,决定多买,现在他手里的钱可以买 NN 瓶酒,但是他算不出来,通过活动兑换他一共可以喝到多少瓶?他很难过,你能帮他计算一下他能喝的酒的数量吗?

输入格式:

输入第一行是一个正整数 TT,代表测试样例的数量,0 < T \leq 1000<T100

接下来有 TT 行,每行输入一个整数 NN,代表一开始所购买的啤酒数量,0 \leq N < 10000000N<1000000

输出格式:

对应每组数据,输出一个结果,即通过活动兑换后,总共能喝到的啤酒数。

样例1

输入:

3
1
2
10

输出:

1
2
22
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
	int t,n,i,j,k;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		int p=n,pg=n;
		int sum=n;
		while(1)
		{
			if(p<3&&pg<4)
				break;
			if(p>=3)
			{
				int ss=p/3;
				sum+=ss;
				p=p-ss*3+ss;
				pg+=ss;
			}
			if(pg>=4)
			{
				int ss=pg/4;
				sum+=ss;
				p+=ss;
				pg=pg-ss*4+ss;
			}
		}
		printf("%d\n",sum);
	}
	return 0;
} 

你可能感兴趣的:(计蒜网 喝酒 (模拟)水)