关于2进制思想的趣味题。

2024-06-17 14:48
文章标签 进制 趣味 思想

本文主要是介绍关于2进制思想的趣味题。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.有一条金条,一个人给一个老板打工7天,每天给那人金条的七分之一,把金条最少切几次才可按时将工资发放?

2.现有1000个苹果,10个盒子,现在要你将1000个苹果装入10个盒子中,使得用户无论购买多少个苹果(1-1000),都能由若干个盒子拼装而成(卖的时候是整个盒子卖,不能拆盒子的包装)
怎么装??

3.有1000瓶液体,无色无味,外表完全一样,其中一瓶是毒药,有10条警犬,警犬喝过毒药后两小时后死亡。问,如何在两个小时后确定哪瓶是毒药。

4.如何仅使用4个砝码,称出40克以内(及40克)的重量的物体。


1、分析:

     最少只需切割2下,分别切出1/7,2/7和4/7的三块。
     因为要将金条切割成最少几份,来分别给工人的7天的工资按时发工资。所以可以将问题转化为:“选择最少几个数,可以表示1到7的7个数的问题”。
     首先,第一天的工资,必须要切割出1/7块来发工资。
     然后,第二天时候,有两种切法来发工资,一种是再切1/7,一种是切2/7通过交换第一天的1/7来实现发放工资的效果。此时,考虑使用第二种时,第三天无须进行切割,便可完成所有交换,达到最佳效果。Ps:若采用第一种,第三天是必须要进行切割。
     通过第二种方法,第三天只需把1/7块支付即可。
     第四天,使用4/7交换工人手中的1/7和2/7。
     第五天,再给1/7。
     第六天,使用2/7交换1/7。
     第七天,给出1/7完成交付。

2、分析:

     可以将1000个苹果以1,2,4,8,16,32,64,128,256,489。
     1000个苹果分装在10个盒子里实现用户无论要买多少个,均可直接获取其中几个盒子达到目的。可以将其转化为“十个数的组合使其可以表示1000以内的任意一个数”。
     可以发现1000约等于1024,而使用
     00000 00001
     00000 00010
     00000 00100
     00000 01000
     00000 10000
     00001 00000
     00010 00000
     00100 00000
     01000 00000
     10000 00000
的十个数的组合即可表示1023以内的任意数字。而由于只有1000个苹果,且只需表示1000以内的数字,所以最后一个数及取512 - 32 = 489个。这时前九个盒子可表示511以内任意一个数,和489组合,即可实现1000以内任意数字的表示。

3、分析:

     因为要通过10只警犬,区分出1000瓶中的唯一一瓶毒药。
     首先,假想10只警犬即十个二进制位,可以表示两个值,两种状态。则,可以演化出2^10 = 1024种状态。
     然后,对1000瓶药水进行编号。
     从00000 00001
     00000 00011
      .....
     11111 01000
     总共1000个编号。对警犬1喂最后一位为1的药水,对警犬2位倒数第二位为1的的药水.....对警犬十喂倒数第十位为1的药水。
     此时根据警犬的状态,可判断药水是否有毒。
如:
     当警犬1死,其余不死时,判断00000 00001有毒。
     当警犬2死,其余不死时,判断00000 00010有毒。
总结:  
     即,几号警犬死亡,则对应位为1,其余位为0的标签药水有毒。

4、分析:

    首先,根据二进制的思想,但使用1、2、4、8只能称出15以内质量的物体。再累似二进制思想。2克可以使用左边3克,右边1克的方法实现2克的重量称量。故1克、3克可实现4克以内的称量,下一个使用9克可实现14克以内的称量。再加一个27,即可实现40以内的所有质量的称量。


总结:这些题都是使用尽量少的数表示最多的数。在不能使用减法时,最优的解法是采用二进制的方式。如第二和第三题。

           当可使用减法时,最优解为三进制方式,如第一题和第四题。

这篇关于关于2进制思想的趣味题。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069740

相关文章

16.Spring前世今生与Spring编程思想

1.1.课程目标 1、通过对本章内容的学习,可以掌握Spring的基本架构及各子模块之间的依赖关系。 2、 了解Spring的发展历史,启发思维。 3、 对 Spring形成一个整体的认识,为之后的深入学习做铺垫。 4、 通过对本章内容的学习,可以了解Spring版本升级的规律,从而应用到自己的系统升级版本命名。 5、Spring编程思想总结。 1.2.内容定位 Spring使用经验

海量数据处理经典思想

第一部分、十五道海量数据处理 1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?     方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(

Linux float int和16进制互相转换

Linux 上float int和16进制互换操作。之前把float转16进制,也就是转成4个字节,方便使用串口传输嘛。使用的方法是: //float 转 16进制float x_pid_p = 15.0;unsigned char * bValue = (unsigned char *)& x_pid_p;printf("%x\t%x\t%x\t%x\n", bValue[0], bVa

每日一题——Python代码实现力扣1. 两数之和(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 菜鸡写法 代码分析 时间复杂度分析 空间复杂度分析 改进建议 我要更强 方法1: 使用哈希表(字典) 方法2: 排序和双指针 方法3: 使用集合(仅适用于特殊情况) 哲学和编程思想

每日一题——Python代码实现PAT乙级1048 数字加密(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 初次尝试  再次尝试 代码点评 代码结构 时间复杂度 空间复杂度 优化建议 我要更强 优化建议 完整代码及注释 时间复杂度和空间复杂度分析 进一步优化 哲学和编程思想 模块化

java字符串在内存和文件中编码的不同——如何理解进制(二进制)与编码(UTF-8)的关系

不管是在内存中,还是文件中,还是网络传输中,计算机运算和存储的都只能是二进制。 内码是程序内部使用的字符编码,特别是某种语言实现其char或String类型在内存里用的内部编码;外码是程序与外部交互时外部使用的字符编码。 “外部”相对“内部”而言;不是char或String在内存里用的内部编码的地方都可以认为是“外部”。例如,外部可以是序列化之后的char或String,或者外部的文件、命令

RabbitMQ和Kafka设计思想的感性辨析

RabbitMQ和Kafka架构图 1. 设计初衷不完全相同 RabbitMQ是消息分发中间件 包收包送,服务很周到。 设计初衷:单播,消息一对一,每条消息只会被发送一个消费者(当然也可以扩展,如果想让多个消费者消费同一条消息,就得这条消息复制成多份放到多个Queue)。Kafka是消息存储和订阅中间件 自己放自己取,只负责提供场地,其它的全自助。 设计初衷:广播,消息一对多,凡是

趣闻进制转换

输入一个十进数,将其转换成 N (大于0小于16)进制数 public class text5 {/*** 输入一个十进数,将其转换成 N 进制数(0<N<=16)。*/public static void main(String[] args) {char arr[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A','B

屁股决定脑袋,思想决定高度

转眼不知不觉来到新公司近三个月了,好久没有静下心写博客了 最近看欢乐颂安迪说的有句话很好,每一个管理者并不在乎你因为什么客观原因导致没完成任务,他更在乎交给你什么任务。你完成的结果如何。是啊,我们在职场与其抱怨这个任务是因为什么原因导致流产,不如多想想解决办法。作为员工我们更应该想想对方有什么需求,在实际工作中多从这些方面思考问题。 1欢乐颂安迪的话引起设计模式的思考 1.1单一职责原则1.2

支撑编程理论的三大思想②简洁

是什么 对代码而言,简洁就是消除了"多余的复杂性"后的状态。这里所说的“多余的复杂性”不是反映了目标(代码要达成的目的)复杂程度的复杂性,而是指在修改代码的过程中遗留下来的痕迹所带来的复杂性。 为什么 “多余的复杂性”不具有任何价值。这类复杂性会阻碍代码正常运行,提高修改代码的难度,损害软件的价值。它会给代码埋下祸根。 消除“多余的复杂性”可以让代码变得简洁。这样一来,阅读、使用、修改代码