作者 陈越
单位 浙江大学
阿汪面前有两只盲盒,每只盒子打开都有两种可能:或者装了 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;
}