列表

详情


NC216024. D博弈与核心能源动力

描述

ZWY最近喜欢在下课后喝酒,她说:“喝酒是人类进步的动力”。现在,便利商店推出了兑换活动。
    1.两个酒瓶可以兑换1瓶酒
    2.四个酒瓶盖子可以兑换1瓶酒
她先知道,在当前她所拥有的资金m和一些空酒瓶k、瓶盖g和当前酒价p已知情况下,她最多可以喝到多少瓶酒。

输入描述

在一行中,给出四个整数,含义如题所述,m(-10000 <= m <= 10000),k(0 <= k <= 10000),g(0 <= g <= 10000),p(1 <= p <= 200)

输出描述

输出一个整数,表示ZWY最多能喝到多少瓶酒。

示例1

输入:

10 4 2 4

输出:

13

说明:

刚开始,ZWY能花8块钱买到2瓶酒,并且用4个空瓶换到2瓶酒,一共4瓶,喝完后剩下4个空瓶与6个瓶盖。

之后,ZWY使用4个空瓶换到2瓶酒,用4个瓶盖换到1瓶酒,一共3瓶,喝完后剩下3个空瓶与5个瓶盖。

之后,ZWY使用2个空瓶换到1瓶酒,用4个瓶盖换到1瓶酒,一共2瓶,喝完后剩下3个空瓶与3个瓶盖。

之后,ZWY使用2个空瓶换到1瓶酒,喝完后剩下2个空瓶与4个瓶盖。

之后,ZWY使用2个空瓶换到1瓶酒,用4个瓶盖换到1瓶酒,一共2瓶,喝完后剩下2个空瓶与2个瓶盖。

之后,ZWY使用2个空瓶换到1瓶酒,喝完后剩下1个空瓶与3个瓶盖。

然后,ZWY就不能喝到更多的酒了QAQ。

一共 4 + 3 + 2 + 1 + 2 + 1 = 13 (瓶)

示例2

输入:

-10 3 0 1

输出:

2

说明:


刚开始,ZWY负债,买不了酒,不过可以用2个空瓶换到1瓶酒,喝完后剩下2个空瓶与1个瓶盖。

之后,ZWY使用2个空瓶换到1瓶酒,,喝完后剩下1个空瓶与2个瓶盖。

然后,ZWY就不能喝到更多的酒了。

一共 1 + 1 = 2 (瓶)

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 404K, 提交时间: 2023-07-24 10:08:28

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int m,k,g,p,s=0,t=0;
	cin>>m>>k>>g>>p;
	if(m/p>0)t=m/p;
	while(k/2||t||g/4)
	{
		k+=t;
		g+=t;
		s+=t;
		t=k/2+g/4;
		k=k%2;
		g=g%4;
	}
	cout<<s; 
}

Python3 解法, 执行用时: 61ms, 内存消耗: 7056K, 提交时间: 2021-12-11 00:05:13

m,k,g,p=list(map(int,input().split()))
m,r=max(m,0),0
while m>=p or k>=2 or g>=4:
    r+=(x:=m//p+k//2+g//4)
    m,k,g=m%p,k%2+x,g%4+x
print(r)

上一题