大厂智力题讲解,学它!!!!(一)

1 小白鼠试药问题

有 1000 瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问,在一个星期内找出有毒的药物,最少需要多少只小白鼠?

这个题看上去让人摸不着头脑,但其实就是考察的一个二进制位的问题
🎉解答:1000瓶药物可以用10个二进制位来表示(10个二进制位最大可以表示1023),假设取十个瓶子,编号为1-10,从二进制编号第一位为1的瓶子中取一滴药物到编号为1的瓶子里面,以此类推,用十个小白鼠分别编号1-10然后喝对应瓶子的药物,一个星期后,死了的老鼠记为1,活着的记为0,从而构成一个10位的二进制数,此时二进制数对应的瓶子就是有毒的。

在这里插入图片描述

2 四人过桥问题

A、B、C、D 四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时 1、2、5、10 分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在17分钟内这四个人都过桥?

🎉解答:因为有时间限制,所以我们得充分利用好速度快的人,因为过桥的时间是根据慢的一方决定的,所以得让慢的人一起过桥,这样才能让总时间短。
方案:
第一趟:AB过桥,然后A回来,花费3分钟
第二趟:CD过桥,然后B回来,花费12分钟
第三趟:AB过桥,花费2分钟,总计17分钟,满足题意。

3 判断病狗数量问题

有 50 家人家,每家一条狗。有一天警察通知, 50 条狗当中有病狗,行为和正常狗不一样。每人只能通过观察别人家的狗来判断自己家的狗是否生病,而不能看自己家的狗,如果判断出自己家的狗病了,就必须当天一枪打死自己家的狗。结果,第一天没有枪声,第二天没有枪声,第三天开始一阵枪响,问:一共死了几条狗?

🎉解答:因为50条狗里面肯定有一条有病,所以我们先假设只有一条病狗,那么肯定有一个人在观察的时候没有看到病狗,所以第一天就会开枪,而第一天没有枪声说明至少有两只病狗,若只有两条,那么病狗主人前一天只看到了一条狗,所以第一天看完知道没人开枪后就知道自己的狗是有病的,第二天肯定会开枪,而第二天没有枪声,那么说明至少有三条病狗,若只有三条,因为病狗主人只能看到两条狗,所以第二天晚上知道没枪声的时候就知道自己的狗有病,所以第三天肯定会开枪,这样结果就跟题目一样,所以只有三条病狗即死了三条狗。

4 飞机空中加油问题

每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机)一箱油可供一架飞机绕地球飞半圈。
问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)

🎉解答:我们可以利用三架飞机实现目标。
ABC三架飞机同时从起点出发,当飞到一圈的1/8时,C分别给AB1/4油箱的油(此时AB油箱满了),然后C返回,AB行驶到1/4的时候B将1/4油箱的油给A(A此时是满油),然后B返回,A行驶到1/2时,B从反方向向A行驶,当行驶到一圈的3/4时AB相遇,此时B再给A1/4油箱的油然后和A一起飞向起点,此时C同样从反方向向AB飞去,当AB行驶到全程的7/8时,ABC相遇,然后C分别给AB1/4油箱的油(此时三架飞机都只有1/4机箱的油),然后三架飞机一起回到起点。

在这里插入图片描述

5 凑容量问题

3ml 5ml 杯子各一个,拼出 4ml 的容量。

🎉解答:
方法一:将3ml杯子倒满水然后倒入5ml杯子,重复操作一次,此时3ml杯子里还有1ml水,将5ml杯子里的水倒掉然后将3ml杯子中1ml水倒进5ml杯子中,然后3ml杯子再倒满水倒到5ml杯子中这样就是4ml了。
方法二:首先将5ml杯子倒满水,然后倒入3ml杯子,剩下2ml,将3ml杯子里面的水倒掉,将5ml杯子里面的2ml水倒进3ml杯子里面,然后将5ml杯子倒满水,再往3ml杯子里面倒水,3ml杯子满的时候5ml杯子里面刚好有4ml的水。

6 判断药污染问题

你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1.只称量一次,如何判断哪个罐子的药被污染了?

🎉解答:
假设4个罐子分别为a,b,c,d,每个药丸的重量为x,从a取一颗药丸,b取两颗药丸,c取三颗药丸,d取4颗药丸合在一起进行称量
若a罐子药丸被污染,则重量为(10x+1)
若b罐子药丸被污染,则重量为(10x+2)
若c罐子药丸被污染,则重量为(10x+3)
若d罐子药丸被污染,则重量为(10x+4)

7 分盐问题

有7克、2克砝码各一个,天平一只,如何只用这些物品三次将140克的盐分成50、90克各一份?

🎉解答:
第一次:用9克砝码称9克盐出来。
第二次:将9克盐和7克砝码放在一边然后称出16克盐出来。
第三次:将9克盐和16克盐放在一边然后称出25克盐。
经过三次称量就称出了50克盐,剩下的就是90克。

8 求1000!问题

小知识:求一个数的有几位可以通过求1+log10(n)来得到
log10(1000!)可以表示为log10(1000*999*998…)=log10(1000)+log10(999)+log10(998)+…,这样我们就可以通过一段代码进行计算了。

🎉代码:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <math.h>
int main()
{
	float sum = 0;
	int i = 1000;
	for (i = 1000; i >= 1; i--)
	{
		sum += log10(i);
	}
	printf("1000!的位数为%d\n", 1 + (int)sum);
}

注意:sum是float类型,需要先强制类型转换为int类型。

9 烧绳子问题

烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?

注意:绳子不均匀说明绳子烧到一半时不代表半个小时。
🎉解答:
取两条绳子,一条绳子从两端开始烧,一条从一端烧,当第一条绳子烧完时花费30分钟,此时再将另一条绳子的另一端点燃,当第二条绳子烧完时花费15分钟,再取一根绳子从两头烧,烧完花费30分钟,总共一小时十五分钟。

10 分金条问题

你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?

🎉解答:
其实这个问题可以转化为怎样把7分成3部分然后用这三部分可以凑成1234567这七个数从而实现每天结束都能给工人一段金条。我们把金条分为1,2,4三部分,这样第一天给第一段,然后第二天收回第一段然后给第二段,第三天给第一段,第四天收回第一段第二段然后给第三段,第五天给第一段,第六天收回第一段给第二段,第七天给第一段。

11 盲人分袜子问题(脑洞题)

有两位盲人,他们都各自买了两对黑袜和两对白袜,八对袜子的布质、大小完全相同,而每对袜子都有一张商标纸连着。两位盲人不小心将八对袜子混在一起。他们每人怎样才能取回黑袜和白袜各两对呢?

这个题目其实怎样想都没有一个方法将袜子分给两人,但看似没有答案的时候换个思路也许就是正确答案!!!!!

🎉解答:
每对袜子分的时候都将商标撕开然后一人一只,这样最后两个人刚好黑袜和白袜各两对。

作者水平有限,若文章有任何问题欢迎私聊或留言,希望和大家一起学习进步!!!
创作不易,希望大家👍支持下,谢谢大家🙏

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值