L1-3(2023团体程序设计天梯赛-模拟赛)

阿汪面前有两只盲盒,每只盒子打开都有两种可能:或者装了 X 克狗粮,或者是一只容量为 Y 克的狗粮储蓄盒。如果是狗粮,阿汪可以快乐地吃掉;如果是空储蓄盒,那就倒霉了,阿汪必须想办法找到狗粮把这只储蓄盒装满,自己还吃不到。

正当阿汪发愁不知道该怎么选的时候,铲屎官大手一挥:“小孩子才做选择,大人全都要!”但全都要的结果,却不一定是赚了还是亏了……

我们假设聪明的阿汪总是能嗅出狗粮最多的盒子,并且绝不会选任何储蓄盒。而铲屎官没有这样的鼻子,他一定是全都要。铲屎官如果打开了有储蓄盒的盒子,就必须想办法把储蓄盒装满,他会优先用另一只盒子里的狗粮装(如果另外一只盒子里有狗粮),不够了还得自己去买新的狗粮,这样阿汪可就亏啦,什么都吃不到了。本题就请你判断阿汪到底是赚了还是亏了。

输入格式:

输入在一行中给出两个整数,绝对值都不超过 100,中间用一个空格分开,分别代表两只盒子里的东西。如果是正数就表示是狗粮的份量,如果是负数就表示绝对值是空盆的容量。两个数都肯定不是 0,因为保证没有空盒子。

输出格式:

第一行输出两个结果:如果让阿汪选能吃到的狗粮 A,和如果铲屎官全都要能吃到的狗粮 B。两个数字间用一个空格分开。如果铲屎官的决定让阿汪赚到了,就在第二行输出一个笑脸 ^_^,否则输出一个哭脸 T_T。但如果反正什么都吃不到(两个盒子里都没有狗粮),就输出一张躺平脸 -_-

输入样例 1:

12 18

输出样例 1:

18 30
^_^

输入样例 2:

12 -18

输出样例 2:

12 0
T_T

 本题算法上没什么难度,主要是有些情况大家没考虑到

1.当A.B都大于0是,狗子选的一定是最大的,并且狗子会笑

2.不管狗粮是否大于盒子容量,狗子都会哭,因为他本来可以吃更多,不过还是要分情况,狗粮大于容量,后输入的为剩余狗粮数,不大于时输入为0

3.当A.B都为盒子时,输出两个0和躺平脸

情况就这些,下面附上AC代码:

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader star = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
        String[] s = star.readLine().split(" ");
        int a = Integer.parseInt(s[0]);
        int b = Integer.parseInt(s[1]);
        if (a>0&&b>0){
            out.println(Math.max(a, b)+" "+(a+b));
            out.println("^_^");
        }else if (a>0&&b<0||a<0&&b>0){
            if(a+b>0){
                out.println((a>0?a:b)+" "+(a+b));
                out.println("T_T");
            }else if (a+b<=0){
                out.println((a>0?a:b)+" "+0);
                out.println("T_T");
            }
        }else {
            out.println(0+" "+0);
            out.println("-_-");
        }
        out.flush();
    }
}

希望比赛中大家不要因为这些小错误扣分,祝大家疯狂AC!

这两天会发布BufferedReader,StreamTokenizer以及PrintWriter的简单用法(其实就是Scanner和System.out的升级版,运行比较快,预防一下超时),很简单的,不会的同学别急,等我一两天!

觉得还不错的同学可以点赞+关注后续一起学习!

你可能感兴趣的:(java,软件工程)