链接:https://ac.nowcoder.com/acm/contest/3036/B
来源:牛客网
题目描述
「这封信真是恶意满满啊」我感觉到头在隐隐作痛
虽然四骑士之信可以被认为是奇迹一般存在的礼装,但是使用限制和所得结果都让人头疼不已。在通入魔力激活之后,这封信上虽然显示了很多信息,但是全都是密文,就好像加密过的压缩包,没有正确的解压密码无法正确的得到信息
所幸,这个解压密码就写在信上,只是这个解压密码本身也是一个难题
获得解压密码的难题被记录在一场私自决斗当中,一名守卫骑士和一名远征骑士起了争执,因此他们决定使用一场决斗来决定谁才应该在争执中退让。他们限制了武器种类,只能从三种武器中选用一种,分别代称为`S`,`J`,`B`。其中使用`S`的骑士可以战胜使用`J`的骑士,使用`J`可以战胜`B`,使用`B`可以战胜`S`
远征骑士自认为自己战无不胜,所以会提前宣告自己使用的武器。守卫骑士本着公平对决的精神,限制自己仅在两种武器中选用一个。若最终平局了,进行裁定的裁决骑士会对两名私自决斗的骑士都进行惩罚
最终根据决斗的结果,我会从三种解密的方法当中选择一种方法对密文进行解译,如果可以的话,我真想把三种解译的情况都记录下来,但是四骑士之信的限制让我胃疼无比。
守卫骑士想要赢,并且不想输。
输入描述:
第一行输入包括两个字符a,b,表示守卫骑士所能选用的两种武器。 第二行输入包括一个字符c,表示远征骑士所选用的武器。 输入保证a,b,c∈{′S′,′J′,′B′}且a≠b。
输出描述:
若守卫骑士胜出,则输出"pmznb" 若远征骑士胜出,则输出"ljrnb" 若平局则输出"lyrnb" (不包括双引号)
示例1
输入
SJ B
输出
pmznb
pmznb
代码
#include <stdio.h>
#include<stdlib.h>
int main(){
char a[3],b;
int c=1,t,i;
scanf("%s",&a);getchar();
scanf("%c",&b);
if(b=='B'){
for(i=0 ; i<2 ; i++){
switch(a[i]-b){
case 8 : t=1; break;
case 17 : if(c!=0) c=1; break;
default: c=0; break;
}
if(t==1){ printf("pmznb"); return 0;}
if(i==1){
if(c==1){ printf("ljrnb"); return 0; }
if(c==0){ printf("lyrnb"); return 0; }
}
}
}
if(b=='S'){
for(i=0 ; i<2 ; i++){
switch(a[i]-b){
case -17 : t=1; break;
case -9 : if(c!=0) c=1;break;
default: c=0;break;
}
if(t==1){ printf("pmznb"); return 0;}
if(i==1){
if(c==1){ printf("ljrnb"); return 0;}
if(c==0){ printf("lyrnb"); return 0;}
}
}
}
if(b=='J'){
for(i=0 ; i<2 ; i++){
switch(a[i]-b){
case 9 : t=1; break;
case -8 : if(c!=0) c=1; break;
default: c=0;break;
}
if(t==1){ printf("pmznb"); return 0; }
if(i==1){
if(c==1) printf("ljrnb");
if(c==0) printf("lyrnb");
return 0;
}
}
}
return 0;
}