粤澳热身赛 题目A:莫斯方块

小明今年上一年级了,他特别喜欢玩积木,于是非常喜欢他的数学老师斯捷就给了他三种不同的莫斯方块,莫斯方块是非常神奇的方块,它只有1 * 1, 1 * 2 和 2 * 2的正方形组成。如下图:
在这里插入图片描述
现在斯捷老师希望小明可以用一定数量的这三种莫斯方块尽量多的拼凑出3 * 3的莫斯方块。请聪明的你帮帮小明,不然小明可能会留级了。
输入要求
每次先输入一个整数T(1 <= T <= 1000000),接下来T组测试数据
对于每一组数据有三个整数a, b, c (0 <= a, b, c <= 100),分别代表1 * 1、 1 * 2 和 2 * 2的莫斯方块数。
输出要求
对于每组测试数据,输出格式为"Case #i: ans",表示第i组测试数据答案为ans。
表示最多可以拼凑出ans个3 * 3的莫斯方块。
输入:
2
1 1 1
1 2 1
输出:
Case #1: 0
Case #2: 1

#include <cstdio>

int main() {
    
    
    int T, kase = 0;
    scanf("%d", &T);
    while(T--) {
    
    
        int a, b, c, cnt = 0;
        scanf("%d%d%d", &a, &b, &c);
        while(1) {
    
    
            if(a >= 1 && b >= 2 && c >= 1) {
    
    
                a -= 1; b -= 2; c-= 1;
                cnt++;
            }
            else if(a >= 1 && b >= 4) {
    
    
                a -= 1; b -= 4;
                cnt++;
            }
            else if(a >= 3 && b >= 1 && c >= 1) {
    
    
                a -= 3; b -= 1; c -= 1;
                cnt++;
            }
            else if(a >= 3 && b >= 3) {
    
    
                a -= 3; b -= 3;
                cnt++;
            }
            else if(a >= 5 && b >= 2) {
    
    
                a -= 5; b -= 2;
                cnt++;
            }
            else if(a >= 5 && c >= 1) {
    
    
                a -= 5; c -= 1;
                cnt++;
            }
            else if(a >= 7 && b >= 1) {
    
    
                a -= 7; b -= 1;
                cnt++;
            }
            else if(a >= 9) {
    
    
                a -= 9;
                cnt++;
            }
            else break;
        }
        printf("Case #%d: %d\n", ++kase, cnt);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_18431031/article/details/105624946