列表

详情


NC220556. 喝可乐

描述

口渴可乐公司近期推出了两种相同价格的新口味可乐,分别是香甜的蜂蜜可乐与温暖的生姜可乐!为了回馈一直以来爱好可乐的广大群众,在新产品上市的一个月内各家超商都有下列的优惠活动!

• 收集  个蜂蜜可乐的空瓶子可兑换一瓶全新的生姜可乐 

• 收集  个生姜可乐的空瓶子可兑换一瓶全新的蜂蜜可乐

可鲁非常地喜欢喝可乐,但他身上的钱只能买  瓶可乐。因此,他希望可以利用优惠活动来让自己喝到尽量多瓶的可乐。你能帮帮他吗?

输入描述

输入的第一行有一个正整数 ,代表测试资料的组数。
每一组测试资料有三个正整数  和 ,各一个空白隔开。

输出描述

每组测试数据输出一行,表示最多喝到的可乐瓶数

示例1

输入:

3
10 5 5
11 3 5
20 50 60

输出:

12
15
20

原站题解

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

C++(clang++11) 解法, 执行用时: 10ms, 内存消耗: 396K, 提交时间: 2021-04-17 23:57:51

#include<iostream>
using namespace std;
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		int n,a,b;
		cin>>n>>a>>b;
		int ans=0;
		for(int i=0;i<=n;i++)
		{
			int x=i,y=n-i;
			int now=n;
			while(x>=a||y>=b)
			{
				y+=x/a,now+=x/a,x%=a;
				x+=y/b,now+=y/b,y%=b;
			}
			ans=max(ans,now);
		}
		cout<<ans<<"\n";
	}
	return 0;
}

Python3(3.9) 解法, 执行用时: 925ms, 内存消耗: 6776K, 提交时间: 2021-04-18 12:56:30

for T in range(int(input())):
    n,a,b=map(int,input().split())
    ans=0
    for i in range(n+1):
        temp,x,y=n,i,n-i
        while x>=a or y>=b:
            suma=x//a
            sumb=y//b
            temp+=suma+sumb
            x=x%a+sumb
            y=y%b+suma
        ans=max(ans,temp)
    print(ans)

上一题