【nowcoder】牛牛吃雪糕

题目描述:

最近天气太热了,牛牛每天都要吃雪糕。雪糕有一盒一份、一盒两份、一盒三份这三种包装,牛牛一天可以吃多盒雪糕,但是只能吃六份,吃多了就会肚子疼,吃少了就会中暑。而且贪吃的牛牛一旦打开一盒雪糕,就一定会把它吃完。请问牛牛能健康地度过这段高温期么? 

每个输入包含多个测试用例。
输入的第一行包括一个正整数,表示数据组数T(1<=T<=100)。
接下来N行,每行包含四个正整数,表示高温期持续的天数N(1<=N<=10000),一盒一份包装的雪糕数量A(1<=A<=100000),一盒两份包装的雪糕数量B(1<=B<=100000),一盒三份包装的雪糕数量C(1<=A<=100000)。
对于每个用例,在单独的一行中输出结果。如果牛牛可以健康地度过高温期则输出"Yes",否则输出"No"。

思路分析:

整体思路是先用一盒三份的来凑,然后再用一盒两份的来凑,最后用一盒一份的

先用一盒三份的,需要两盒,看c里有多少两盒,加到ans,然后c只可能剩1盒或者没剩

如果c剩一盒的话,需要仔细讨论以下

如果此时a,b均有,那么先用一盒a一盒b把这一盒c消耗掉,ans加一

如果a没有只有b,那么是不可能把这盒c消耗掉的,因为会出现一整盒没吃完

如果b没有a有,那么用三盒a把这盒c消耗掉,ans加一

然后现在讨论c没有的情况下,只看a和b

分别用三盒b和六盒a去使ans增加

看最后剩下的a和b还能否凑出六份

Java实现:

import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        while (t > 0) {
            int n = sc.nextInt();
            int a = sc.nextInt();
            int b = sc.nextInt();
            int c = sc.nextInt();
            int ans = 0;
            ans = c/2;
            c %= 2;
            if (c == 1) {
                if (a > 0 && b > 0) {
                    a--;
                    b--;
                    ans++;
                }else if (b == 0 && a >= 3){
                    a -= 3;
                    ans++;
                }
            }
            ans += b/3;
            b %= 3;
            ans += a/6;
            a %= 6;
            if (b*2+a >= 6) {
                ans++;
            }
            if (ans >= n) System.out.println("Yes");
            else System.out.println("No");
            t--;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/heyiamcoming/article/details/80493573