PTA 7-4 小孩子才做选择,大人全都要 2024_05_19

作者 陈越

单位 浙江大学

 

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

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

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

输入格式:

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

输出格式:

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

输入样例 1:

12 18

输出样例 1:

18 30
^_^

输入样例 2:

12 -18

输出样例 2:

12 0
T_T

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

分析这道题目之后,先是分析逻辑,然后自己撰写了以下代码

#include<stdio.h>
int main(){
    int x,y;
    scanf("%d %d\n",&x,&y);
    int a,b;
    a=x;
    if(y>x){
        a=y;
    }
    b=x+y;
    if(b<0) b=0;
    printf("%d %d\n",a,b);
    if(a>b){
        printf("T_T\n");
    }else if(a<b){
        printf("^_^\n");
    }else if(a+b==0){
        printf("-_-\n");
    }
    return 0;
}

但提交后出现了部分评测点错误的情况

 

询问老师后,老师给了以下代码

#include<stdio.h>
int main()
{
    int x,y,a,b;
    scanf("%d %d",&x,&y);
    if(x>y) a=x;
       else a=y;
    b=x+y;
    if(b<0) b=0;
    if(a>0)printf("%d %d\n",a,b);
       else printf("0 0\n");
    if(a>0)  
        if(a<b) printf("^_^");
           else printf("T_T");    
        else printf("-_-");
    return 0;
}

经过比照修改,我发现我原先的代码缺少了a=0的情况;因此修改后正确的代码为

#include<stdio.h>
int main(){
    int x,y;
    scanf("%d %d\n",&x,&y);
    int a,b;
    a=x;
    if(y>=x){
        a=y;
    }
    b=x+y;
    if(b<0) b=0;
    if (a>0) printf("%d %d\n",a,b);
        else printf("0 0\n");
    if (a>0)
        if(a>b) printf("T_T\n");
            else printf("^_^\n");
        else printf("-_-\n");
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值