聪明的学生

这篇博客探讨了一个智力问题,其中每个学生只知道其他两个人的数字,但不知道自己的。通过分析,得出结论:最大数字的学生总是最先猜出自己的数字,因为他们可以排除相减的情况。博主将问题抽象为X1, X2, X3三个学生的数字,并说明最大数(X2=X1+X3)总能先猜出自己,因为他们可以排除两数之差的可能性。最后,博主提到了代码实现和逻辑判断的细节。" 125676515,13017907,Modelsim分频模块仿真输出异常解决办法,"['FPGA开发', '硬件描述语言', '仿真问题']
摘要由CSDN通过智能技术生成

在这里插入图片描述
每个学生都能直到另外两个学生的的数字,但不清楚自己的数字,这里用1,2,3作为例子来分析。A只有两种情况,一种是(2-1)。另外一种是(2+1),但是A不能确定是哪一种情况,所以A猜不出来。再来看看B,两种情况分别是(1+3)和(3+1),但是B仍然不能确定。最后是C,两种情况是(1+2)和(2-1),但是C可以排除(2-1)这个情况的,因为如果C是(2-1),那么B是在看到A是1,C是1的情况下可以猜出来自己是2,但是B没有猜出来,故C可以排除的是(2-1)这种情况,因此C只能是(2+1),也就是3。可以分析和总结出最大数字总会被先猜出来,是因为只有最大数字可以排除相减的情况,因为如果他是相减得到的,前面一定有人可以猜出来。
现在将问题抽象,即A,B,C,3个学生,他们头上的数字分别为X1,X2,X3。上述结论可知,最大的数总会先猜出来。不妨假设,B是先猜出来的学生,即X2=X1+X3,而B能排除|X1-X3|这种可能性的依据有两个,一是X1=X3,那么B只能是X1+X3,因为三个都是正整数;另外一个依据是假设X2=|x1-X3|,那么在前面提问中A或C已经先猜出来了,但他们没有猜出来,可以确定自己是两数之和,而非两数之差。至于A先猜出来还是B先猜出来,如果A>C,那么A先猜出来,否则C先猜出来。

代码及注释如下

#include <stdio.h>
#include <stdlib.h>
int step(int t1,int t2)
{
   
    if(t2>t1)
    return t2-t1;
    else
        return t2+3-t1;

}
int times(int i,int j,int t1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值