鹿死谁手
古代有一个皇帝,命令A、B、C、D、E、F、G、H的八员大将陪同他外出打猎。经过一番追逐,有一员大将的一支箭射中了一只鹿,是哪一员大将射中的,开始谁也不清楚。这时候,皇帝叫大家先不要去看箭上刻写的姓名,而要大家先猜猜究竟是谁射中的。八员大将众说纷纭。
A说:“或者是H将军射中的,或者是F将军射中的。”
B说:“鹿肯定是我射中的啦。”
C说:“我可以断定是G将军射中的。”
D说:“怎么说也不可能是B将军射中的!”
E说:“A将军猜错了。”
F说:“不会是我射中的,也不是H将军射中的。”
G说:“绝对不是C将军射中的。”
H说:“我同意A将军的观点。”
猜完之后,皇帝命令把鹿身上的箭拨出来验看,证实八员大将中有n个人猜对了。问:鹿是谁射死的?
【输入格式 】
一个整数n,(0<=n<=8), 表示有n人猜对了。
【输出格式 】
仅一行含一个字符,是对应输入n的唯一解,即射鹿之人。
如果是无解或者多个解,则输出DONTKNOW。
【输入样例】
5
【输出样例】
G
【分析】
简单的条件罗列,说对了返回1,否则返回0,所有条件的和即为n,从A枚举到H即可。
【AC代码】
#include<stdio.h>
int main()
{
int i,j,k=0,n;
scanf("%d",&n);
for(i='A';i<='H';i++)
{
if(((i=='H'||i=='F')+(i=='B')+(i=='G')+(i!='B')+(i!='H'&&i!='F')+(i!='F'&&i!='H')+(i!='C')+(i=='H'||i=='F'))==n)
{
k++;
if(k==2) break;
j=i;
}
}
if(k==0||k==2)
printf("DONTKNOW");
else
printf("%c",j);
return 0;
}