HZNUOJ 1813 题解

news/2025/2/6 0:48:58/

HZNUOJ 1813 黑帽子和白帽子

Time Limit: 1 s Memory Limit: 32 MB

Description

也许你们听说过“黑帽子和白帽子”问题,这是一个非常经典的问题,大概是这样子表述的:
一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其他人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?
现在我们希望你来帮忙求解这类问题,假设给定舞会的人数n和关灯次数m,求戴黑帽子的人数。

Input

有多组输入,每组占一行,包含两个正整数n和m (0<m<n<=100) 。

Output

对于每组输入,输出戴黑帽子的人数,每组输出占一行。

这道题其实有一个隐藏前提就是每个人都玩过且很会玩这个游戏(即绝顶聪明)。我们可以将自己代入情景模拟一遍找到规律,然后就会发现这其实是一道简单的输入输出的问题,即每组都读入n、m,然后原封不动地将m输出即可。

下面我们来模拟一遍。

首先因为题目中写道是一群人且0<m<n<=100(n、m都是正整数),所以n>=2,n>m>=1。
两个人时(n=2),不用讨论,因为m必为1。

三个人时(n=3),若你看到两顶白帽,很容易就能知道自己是那个带黑帽子的人(m>=1),在第一次关灯就会打自己。①

若看到一黑一白,你此时无法确认自己是什么颜色,当第一次关灯时,若听到巴掌声,那你的帽子就是白色的(同①理);若没有听到巴掌声,就说明有一个人看到的情况是跟你一样的他也不能确定自己的颜色,且没有人看到两顶白帽,所以由此得出,你自己戴的是黑帽,在第二次关灯时会打自己,且此时场上有两顶黑帽。②

四个人时(n=4),若第一次关灯就有人打自己,即有人看到了三顶白帽子然后推测自己是黑帽,所以在场有一顶黑帽。③

若你一开始看到的是一黑二白,且第一次关灯没有巴掌声,你马上就能知道自己是那另一个戴黑帽的,在第二次关灯时就会打自己,即此时在场有两顶黑帽。④

若你一开始看到的是两黑一白,且第一次关灯没有巴掌声,此时你并不知道你是否为情况④里其中一个白帽子,还是说在场有三顶黑帽而你是其中一个。所以你需要听第二次关灯有无巴掌声。若有,同④;若没有,你可以知道那俩个黑帽看到的是跟你一样的情形,所以你是黑帽,在第三次关灯时就会打自己,即此时在场有三顶黑帽。
……………………
………………

后面的情况不再赘述。 若继续模拟下去,会发现无论在场多少人,你的判断方法都是这样的。即白帽数量的增减并不会影响关灯次数与黑帽个数的对应关系,所以无论n为多少,只需要知道在第几次关灯时响起巴掌声,在场就有几个黑帽子

得出了以上这个结论以后,代码实现即可。
需要注意的点就是未限定组数的多组输入。

#include<stdio.h>
int main()
{int n,m;while(~scanf("%d %d",&n,&m)){printf("%d\n",m);	}return 0;
} 

(要是我讲的不够清晰的话,希望大家可以去找找其他人对这个问题的解释,尽力去理解一下)

在这里插入图片描述


http://www.ppmy.cn/news/712693.html

相关文章

FindResource函数错误代码:1813-找不到映像文件中指定的资源类型 与LoadResource函数错误代码:1812-指定的映像文件不包含资源区域

函数原型&#xff1a; HRSRC WINAPI FindResource(_In_opt_ HMODULE hModule,_In_ LPCTSTR lpName,_In_ LPCTSTR lpType ); 关于第一个参数hModule&#xff1a;如果为null&#xff0c;那么该函数就会在当前进程中寻找资源。如果在DLL情况下&#xff0c;该函数不可以…

1813.方块游戏

Powered by:NEFU AB-IN Link 文章目录 1813.方块游戏题意思路代码 1813.方块游戏 题意 农夫约翰试图通过给奶牛一套通常用于学龄前儿童的 N 个拼写板来教他的奶牛阅读。 每个拼写板的每一侧都有一个单词和一个图画。 例如&#xff0c;一侧可能有单词 cat 和一只小猫&#xff0…

无法创建表mysql error 1813解决

Error Code: 1813. Tablespace ‘myschema’.‘mytable’ exists. 出现这个错误的原因是上面的mytable表对于的".ibd"没有删除。进入到数据目录下myschema这个文件夹下删除这个表对应的“.ibd”文件就好了 data目录需要更改访问权限才能进入 终端输入下面的代码可以更…

力扣 1813. 句子相似性 III

题目 一个句子是由一些单词与它们之间的单个空格组成&#xff0c;且句子的开头和结尾没有多余空格。比方说&#xff0c;“Hello World” &#xff0c;“HELLO” &#xff0c;“hello world hello world” 都是句子。每个单词都 只 包含大写和小写英文字母。 如果两个句子 sen…

“图解”LeetCode 1813. 句子相似性 III

【LetMeFly】&#xff1a;“图解”1813.句子相似性 III 力扣题目链接&#xff1a;https://leetcode.cn/problems/sentence-similarity-iii/ 一个句子是由一些单词与它们之间的单个空格组成&#xff0c;且句子的开头和结尾没有多余空格。比方说&#xff0c;"Hello World&…

mysql错误代码1813_MSSQL2000数据库附加错误1813解决方案

举例有一个名为"mydb_data.mdf"的数据库文件需要进行附加操作 按以下步骤执行&#xff1a; 1、先备份数据库文件“mydb_data.mdf” 2、在sql企业管理器中新建一个同名的数据库“mydb" 3、停止sqlserver服务 4、用第1步备份的数据文件“mydb_data.mdf”文件覆盖新…

【LeetCode】1813. 句子相似性 III

1813. 句子相似性 III 题目描述 一个句子是由一些单词与它们之间的单个空格组成&#xff0c;且句子的开头和结尾没有多余空格。比方说&#xff0c;“Hello World” &#xff0c;“HELLO” &#xff0c;“hello world hello world” 都是句子。每个单词都 只 包含大写和小写英…

【Java|golang】1813. 句子相似性 III

一个句子是由一些单词与它们之间的单个空格组成&#xff0c;且句子的开头和结尾没有多余空格。比方说&#xff0c;“Hello World” &#xff0c;“HELLO” &#xff0c;“hello world hello world” 都是句子。每个单词都 只 包含大写和小写英文字母。 如果两个句子 sentence1…