首页 > 试题广场 >

一架飞机载着5位运动员从奥林匹克运动会归来,这5位运动员在某

[问答题]

一架飞机载着5位运动员从奥林匹克运动会归来,这5位运动员在某个项目中排名第一到第五。他们说了下面这些话:
A:”
我不是最后一名。
B:”C
是第三名。
C
”A的排名在E后面。
D:”E
是第二名。
E:”D
不是第一名。
处于谦虚或其他什么原因,金牌和银牌的得主都说了谎。那三个成绩相对较差的运动员倒说了真话。 他们的排名到底怎样?

YL,头像 YL,
public class Test {
    public static void main(String[] args) {
       int[] person = new int[6];
        for (person[1] = 1; person[1] < 6; person[1]++) {
            for (person[2] = 1; person[2] < 6; person[2]++) {
                for (person[3] = 1; person[3] < 6;person[3]++) {
                    for (person[4] = 1; person[4] <6; person[4]++) {
                        for (person[5] = 1; person[5] < 6; person[5]++) {
                            int sum = person[1] + person[2] + person[3] + person[4] + person[5];
                            int mul = person[1] * person[2] * person[3] * person[4] * person[5];

                            if (sum == 15 && mul == 120){
                                if (judge(person)){
                                    System.out.printf("%d %d %d %d %d",person[1] , person[2] , person[3] , person[4] , person[5]);
                                    System.out.println();
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    public static boolean judge(int[] person){
        boolean [] isTrue = new boolean [6];

        isTrue[1] = person[1] != 5;
        isTrue[2] = person[3] == 3;
        isTrue[3] = person[1] > person[5];
        isTrue[4] = person[5] == 2;
        isTrue[5] = person[4] != 1;

        for (int i = 1; i < 6; i++) {
              if (person [i] < 3){
                  isTrue[i] = !isTrue[i];
              }
        }

        if (isTrue[1] && isTrue[2] && isTrue[3] && isTrue[4] && isTrue[5])
            return true;
        return false;

    }
}



作为程序员,当然是暴力破天下了,想起来那时候参加蓝桥杯的SB时光了
编辑于 2019-07-10 10:02:57 回复(3)
A:”我不是最后一名。”   //真,A34名实锤,如果A是12名,那么他说这句话就是真话,如果他是第5名,他说这句话就是假话
B:”C是第三名。
C
”A的排名在E后面。
D:”E
是第二名。
E:”D不是第一名。”

//确定A之后4个人两真两假就只有6种可能
//①假定B真C真,那么  A4C3  E非2 D1 
又因为A排在E得后面,那E1 和D1矛盾,排除。
//②假定B真D真,那么 A4C3  D1E2剩下一个B5
”A的排名也在E的后面“也为真 出现4真,排除
//③假定B真E真,那么 A4C3 ,E非2,D非1
因为“A的排名在E的后面”为假,所以E5,
此时“E是第二名”也为真,出现4真,排除。
//④假定C真D真,那么D1E2,与D真不服,排除。
//⑤假定C真E真,那么D非1 C非3 E非2
A34 C45 E345  “A排在E的后面” A4E3C5  D2B1,符合。
//⑥假定D真E真,那么E2 D非1 C非3 
“A的排名在E后面”也为真,出现4真,排除。

菜狗分析,有意见指出,有问题cue我。
发表于 2019-09-11 10:52:01 回复(0)
    public static void main(String[] args) {
        int[] p = new int[5];
        for( p[0]=1;p[0]<6;p[0]++) {
            for( p[1]=1;p[1]<6;p[1]++) {
                for( p[2]=1;p[2]<6;p[2]++) {
                    for( p[3]=1;p[3]<6;p[3]++) {
                        for( p[4]=1;p[4]<6;p[4]++) {
                            if(p[0]+p[1]+p[2]+p[3]+p[4]==15&&p[0]*p[1]*p[2]*p[3]*p[4]==120) {
                                if(judge(p))System.out.println(p[0]+" "+p[1]+" "+p[2]+" "+p[3]+" "+p[4]);
                            }
                        }
                    }
                }
            }
        }
        
    }
    public static boolean judge(int[] p) {
        boolean[] words = new boolean[5];
        words[0] = p[0]!=5;
        words[1] = p[2]==3;
        words[2] = p[0]>p[4];
        words[3] = p[4]==2;
        words[4] = p[3]!=1;
        for(int i=0;i<5;i++) {
            if(p[i]<3) {
                words[i] = !words[i];
            }
        }
        if(words[0]&&words[1]&&words[2]&&words[3]&&words[4])return true;
        return false;
    }


4 1 5 2 3
bdeac
发表于 2019-06-05 11:21:03 回复(0)
A分析:
    A说本人不是最后一名,假如A说了假话,则A是最后一名,但是最后一名说的是真话,矛盾。所以A说的是真话,排在3-5位。

再分析相互纠缠的D和E:
    假设D说了真话,那么E就是第二名,E就是说的假话,那么D就是第一名,但是第一名应该说假话,矛盾。所以D说了假话,D应该排在1-2位。

再来分析B和C:
    假设B说了真话,那么C就是第三名,C说的就是真话,由于A也是说的真话,那么3-5位的排序只能是 C E A,但是A不是最后一位,矛盾。所以B说的是假话,排位在1-2位。

综合来看:
    D B说了假话,那么A C E就是说了真话,对A C E进行排序就是:E A C。由E 对 D B进行排序就是:B D。所以真正的排名就是:B D E A C。
发表于 2019-06-01 15:10:23 回复(3)
前提条件:
处于谦虚或其他什么原因,金牌和银牌的得主都说了谎。那三个成绩相对较差的运动员倒说了真话。 他们的排名到底怎样?
说假话排名:1,2  说真话排名:3,4,5
------------------------------------------------
A:”我不是最后一名。”
A为真,  排名=3,4,5且A!=5     A=3,4
A为假, 排名=1,2 且A=5   不成立           
所以A为真 排名A=34
-----------------------------------------------
D:”E是第二名。    E:”D不是第一名。
D为真,排名345且E=2    这样的话  E说话为假,排名1,2 
如果E说的是假话 那么 D的排名就是1;如果D的排名是1,那么D就要说假话---逻辑不成立
所以D为假 排名D=12  且E!=2

已知D=12  ;  E:”D不是第一名。”若为假,那么E排名12  且D=1;  
如果D=1,E又在说假话,那么E只能为2,这与上面D得到的E!=2相违背---逻辑不成立
所以E为真 排名E=345 且D!=1  , 上面得到D=1或2   那么D=2;
-------------------------------------------------
5个人 1,2名说假话  3,4,5名说真话  
已知A,E为真   D为假    那么B和C  就是1真1假
A=34  , D=2  , E=345
-------------------------------------------------
B:”C是第三名。 
如果B为真: 排名B=345  且C=3  那么C就要说真话----就变成4真1假----逻辑不成立
所以B为假;排名B=1或2   已知D=2 所以 B=1   C说的是真话
-------------------------------------------------
C”A的排名在E后面。     
C为真 A<E  ,A=3或4 ,E=345
那么A只能是4,E只能是3     剩下一个C就5
-----------------------------------------------
最终排名:BDEAC


           
           




发表于 2019-05-31 04:24:01 回复(0)
A所说的必定为真,因为如果A说的是假的,那么A是最后一名,但是根据题目描述,只有金牌和银牌的得主说了谎;
同理,如果B说的是对的,那么C必定说的是对的;如果D说的是对的,那么E说的必定是错的;
而如果这样则只有一人说谎,所以B和D中必定有人说谎;
因为E如果说的是错的,那么D说的必定是错的,但这样的话可推断出D是第一名,E也是第一名,导致两者矛盾,所以E说的必定是对的;
所以D说的是错的,这样的话B和C之中必定有人说谎,根据上面的推断“如果B说的是对的,那么C必定说的是对的”,可知道B说的是错的;
根据E的说法,那么D是第二名,则B是第一名;因为B说的是错的,所以排名第三的只能是E或A,又根据C的说法,则E是第三名;再根据A的说法A是第四名,那么C是第五名。
即真是排名为B,D,E,A,C


发表于 2020-08-16 16:12:27 回复(0)
若A为假,则A为最后一个,则A所说为真,A为第三或者第四
若 D所说为真,则E所说为假,故D为第二,矛盾,所以D所说为假,且D为第一或第二
若E为假,则D为第一,E为第二,故与D所说矛盾,故E所说为真,E为第三第四或者第五,故D为第二
若B真,E假,则C在第一或者第二,与B说的矛盾,故C为真,则B为假,则B第一,D第二,E第三,A第四,C第五
发表于 2019-09-21 14:46:38 回复(0)
1. 假如E说了假话,则D为第一名,而E说谎所以是第二名,但因为D说“E是第二名”为真话,则存在矛盾,故E说了真话
2. 因为E说了真话,故D所说的“E是第二名”为假话,故D说了假话
3. 假如B说了真话,则第三名为C,C所说的“A的排名在E后面”也是真的,则第四名为E,第五名为A,但因为A说真话“我不是最后一名”,则存在矛盾,故B说了假话
4. 结合2、3条件(D、B说谎,E说真话),可以排出第一名为B,第二名为D
5. A说真话“我不是最后一名”,C说真话“A的排名在E后面”可排出第三名为E,第四名为A,第五名为C
总结:
      第一名:B
      第二名:D
      第三名:E
      第四名:A
      第五名:C
发表于 2019-09-17 16:45:55 回复(0)
第一B 第二D 第三E第四A 第五C
发表于 2019-08-03 10:10:46 回复(0)
第1到5名依次是:B D E A C。
可以用假设A为前两名,说了谎,推出他是最后一名,与假设冲突,说明:A是非金,非银选手,进而说明他是3或4名。
再假设B没说谎,C为3,那A为4,且A在E后,E只能为1或2名,E说谎所以D为1,D说谎所以E不是第2,与假设冲突。说明:B为金银选手C非3.
假设C为金银选手说谎了,得出D,E都是真话,E在A后,D说E是2,与假设冲突。说明:C为非金银选手,且为4或5,A在E后。
假设D为真,那么E为假,E说谎那么D为1,与假设冲突. 说明:D为金银选手,E就只能是为非金银选手。
到这里已经很清楚了,A,B,C,D, E分别为真,假,真,假,真。E为真所以D非1,D又是金银选手,所以D为2,B也是金银选手B为1,
因为A在E后,所以E为3,A为4,C为5。
综上所述:排名依次为 B D E A C. 


发表于 2019-07-17 10:46:45 回复(0)
A  4
B 5
C 3
D 2
E 1
发表于 2019-07-09 21:50:19 回复(0)
A 必对
答案:B A C D E (注:排名在后不一定是连着)
假设 B 对,则 A 只能为第四名,则 C 说法正确,D、E 说法错误,则顺序为 B A C D E 符合规则
若 B 不对,则后续全部无法成立。
例:C 对,则 E 只能为第二名,A 为第三名,此时第一名,为 D,而D、E说法全对,不符合规则,则 C 必错
由此,A、D、E 为后三名,说法全对,B、C为前两名,说法不成立


发表于 2019-07-09 20:10:17 回复(0)
从题干中 可得到,第一和第二名说谎
A:“我不是最后一名” 若A说谎,A就是最后一名,如果是最后一名,就不能说谎,所以A没有说谎
()()()A()所以最后一名不是A
B:“C是第三名” 若B说谎,B就是第一或第二名 ()(B)()A()
                           若B没有说谎,C就是第三名   ()()(C)()A()
C:“A的排名在E后面” 
                        B true  ()()(C)(E)A()  此时排名非法,A成为了最后一名,所以B说谎了,C不是第三名 ()(B)()A()
                        此时,无法判断C的排名,只知道C不是第三名
D:“E是第二名” ,若true,E(E:"D不是第一名")说谎,则,D是第一名,D就得说谎,与假设矛盾,所以D说谎,D前两名,
                            至此,前两名便是B和D因此,A,C,E没有说谎
E:“D不是第一名”,则D是第二名,
根据 C:“A的排名在E后面” ,E为第三名,C为最后一名
   
因此排序为 B D E A C
发表于 2019-07-08 17:17:34 回复(0)
 
发表于 2019-07-01 00:47:31 回复(0)
 
发表于 2019-06-30 11:22:37 回复(0)
BDEAC
发表于 2019-06-26 22:57:21 回复(0)
不懂笔墨不读书
发表于 2019-06-24 17:20:46 回复(0)
先判断A有没有说谎,如果A是前两名,A说自己不是最后一名那就是没有说谎的,与前两名说谎前提不一致,所以A没有说谎,所以A是第三名或者第四名。如果B没有说谎那么C就是第三名,如果C是第三名那么C也没有说谎,这样的话A就是第四名,E是第一名或者第二名,那么E一定说谎了,那么D就是第一名了,那么E就是第二名,但是D应该是说谎的,那就与D说谎前提条件不一致。所以回到A没说谎,B说谎,B是第一名或者第二名,C就一定不是第三名。如果C是前两名,那么C说谎,那其他人都没有说谎了,那么E就是第二名,那么A的排名应该是在E的后面,那么C就没说谎,不符合。回到A没有说谎,B说谎,C应该是后三名,那么E就是在前两名或者第三名,如果E前两名,那么E说谎,已经有两个说谎D就不可能了,那么D就是第一名,那么D应该是说谎了,不符合,所以E应该是第三名,那么可以确定A是第四名,C是第五名E是第三名,那么E没有说谎D应该是第二名,E是第一名,所以排序应该是BDEAC 。
编辑于 2019-06-20 16:08:27 回复(0)
假设A说谎,则说明A是第一名或者第二名,但是由于说谎后的说辞与A的身份不对应,即A是最后一名,A又是第一名或者第二名,不成立,因此A没有说谎,A确实不是最后一名,A可能是第三名或者第四名

由于D和E两个人都是在讨论对方,因此假设有下面的情况:
假设D说谎,则说明E不是第二名,D是第一名或者第二名,此时E也说谎的话,则说明D是第一名,而E只能是第二名,这与上者不符,因此两人不能同时说谎;
假设D说真话,则说明E是第二名,E说谎,则说明D是第一名,但是D说真话就不是第一二名了,所以D说真话,E说谎不成立
假设E说真话,则说明D不是第一名,此时D说真话时与E的身份不符合,D说谎时,E确实不是第二名
因此,D和E的情况就是E说真话,D说假话,D为第二名E为第三名或者第四名或者第五名;

假设B说真话,则C是第三名,C也应该说的是真话,这时A、B、E是第三名或者第四名或者第五名,C也是第三名,不符合;
因此B说假话,则C不是第三名,B是第一名,此时第一二名已经确定,C说的也是真话,即ACE为后三名,A在E的后面,则A为第四名,E为第三名,C为第五名

因此最后的结果是:第一名是B,第二名是D,第三名是E,第四名是A,第五名是C

发表于 2019-06-15 21:59:15 回复(0)
 
A排除是前两名,因为如果是真,则A没有说谎,互相矛盾,所以他也不是最后一名(第三或者第四)

假设B说的是真,那C第三名的话,A只可能是第四名

假设C说的是真,那E就是前两名,且E一定是说谎的,所以D就是第一名,那么D也就是说谎的,所以E不是第二名,那E就只可能是最后一名
DBCAE,若是这样的话,只有B会是第二名,那么B说谎,和现在的结果对立,假设不成立。

假设C说的是假,那么E在A后面,那E就是第五名,那么E说的一定是真的,那么D就不是第一名。那D说的E的位置又和上面的假设对立,所以D说谎,那么D就只能是第二名:  XDCAE,那只剩下B当第一名,结果错误。

所以无论怎么推论,B一定是说谎的。那么判断B为前两名。C不是第三名

先假设C说的是错的。那么前两名就是B和C,那么E就在A后面,那后面的D和E说的都只能是真话。但是D的结果又和推算结果相反,所以C肯定说的是真话。

那么就是A肯定在E后面。
假设D说的是真话,那么B就肯定是第一名,所以E说的也是假话,那么D就是第一名,矛盾,所以D肯定说的是假话。

那么就确定,B和D是说假话,其他都是说真话,那么就是B是第一名,前两名结果得出:BD,由于C说的是真话,A又只能位于三四名之间,所以得出前⑤名:BDEAC





发表于 2019-06-14 11:39:57 回复(0)