首页 > 试题广场 >

喝可乐

[编程题]喝可乐
  • 热度指数:856 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
口渴可乐公司近期推出了两种相同价格的新口味可乐,分别是香甜的蜂蜜可乐与温暖的生姜可乐!为了回馈一直以来爱好可乐的广大群众,在新产品上市的一个月内各家超商都有下列的优惠活动!

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

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

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


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


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

输入

3
10 5 5
11 3 5
20 50 60

输出

12
15
20
#include <stdio.h>
int pingshu(int x, int y, int a, int b) {
    int total = x + y;
    int h = x, g = y;

    while (h >= a || g >= b) {
        int h_mod = h % a;
        int h_div = h / a;
        int g_mod = g % b;
        int g_div = g / b;

        total += h_div + g_div;
        h = h_mod + g_div;
        g = g_mod + h_div;
    }
    return total;
}
int findmax(int arr[], int len) {
    int max = arr[0];
    for (int i = 1; i < len; i++) {
        if (arr[i] > max)
            max = arr[i];
    }
    return max;
}

int main() {
    int T;
    scanf("%d", &T);
    while (T--) {
        int n, a, b;
        scanf("%d %d %d", &n, &a, &b);

        int arr[10005] = {0};
        for (int j = 0; j <= n; j++) {
            arr[j] = pingshu(j, n - j, a, b);
        }

        int ans = findmax(arr, n + 1);
        printf("%d\n", ans);
    }
    return 0;
}
发表于 今天 00:32:30 回复(0)