腾讯暑期实习笔试题 有趣的梅式砝码问题

无意间看到这样的一个题目,题目内容是:

用4个砝码称出1到40的重量的物体,这四个砝码的重量分别是多少??

此处有一点必须注意,很多人一拿到题目(包括我自己),一下子就想到了二进制的解法,可是立刻就发现,二进制的40需要的位数大于4位,也就是说不靠谱。

更加值得注意的是,二进制的方法用在此处,相当于只是将砝码做加法,并未考虑减法,见过天平的同学都知道,砝码是可以和物体放在一边的。因此是可以做减法的。

看了大多数人的题解,提到了,这是一个“梅式砝码”的问题,首先:作出如下假设:(有点类似数学归纳)

假设现在有a1,a2,a3,....,am个砝码,移动可以称出 (1  到  a1+a2+a3+....am)这些重量的物体

那么再增加一个重量为 b =  (a1+a2+...+am)*2+1 的物体,那么就可以称出重量为  1  到  (a1+a2+...+am)*2+1 的物体。

虽然这个结论很显然,但是做一个小推断吧:

首先,通过 这
a1,a2,a3,....,am    m个砝码,可以得到数字  1,2,3 , 。。。 , (a1+a2+...+am)。

其次,加入  b 之后,可以得到的重量: 1,2,3 , ..., (a1+a2+...+am)依然可以得到。

接着利用b分别去减上述得到的重量

可以得到:

b - 1 =( a1 + a2 + ... +am)*2;

b - 2 =( a1 + a2 + ... +am)*2-1;

..... ,

b - (a1+a2+...+am) = (a1+a2+...+am)+1;

将这些重量逆序。便是  (a1+a2+...+am)+1 到  ( a1 + a2 + ... +am)*2 +1 的重量了。

显然,可以通过上述递推式得到答案为 1,3,9,27

关于此问题的一些思考:

当我把这道题问其他人的时候,一致想到的都是进制相关的问题,也就是说40用二进制表示需要的位数是大于4的,那么不能使用二进制来考虑,他直接脱口而出答案,让我特别惊讶,他的理由是:不能使用二进制,那就是用3进制啊。

这难道只是巧合吗?至今想不明白。。。既然所有的进制都能表示所有的整数,那么为什么其他进制不可以呢。唯一能够想到的限制便是这里的砝码的个数只能是1,也就是说在该进制表示下,各个位上的数字只能是1,不论是加法或者是减法。

很值得思考的问题~~

腾讯暑期实习笔试题 有趣的梅式砝码问题,布布扣,bubuko.com

时间: 2024-10-05 12:13:09

腾讯暑期实习笔试题 有趣的梅式砝码问题的相关文章

2014.3.29阿里巴巴暑期实习笔试题分析

参考:http://blog.csdn.net/iloveyoujelly/article/details/22941531 下面中的[分析]是我给出的. 2014.3.29阿里巴巴暑期实习笔试题分析 一.单选 1.假设一个主机ip为192.168.5.121,子网掩码为255.255.255.248,则该主机的网络号部分(包括子网号部分)为-- A.192.168.5.12  B 192.168.5.121   C 192.168.5.120   D 192.168.5.32 参考答案 C [

2015小米暑期实习笔试题_懂二进制(位运算)

总共3道题,最后一道还没AC出来... 世界上有10种人,一种懂二进制,一种不懂. 那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7 此题解法类似于<编程之美>上面看到的某题 代码: #include <iostream> using namespace std; int countBitDiff(int m, int n) { int sum=0; for(int i=0;i<32;i++) if(

2015小米暑期实习笔试题_风口的猪-中国牛市(dp)

风口之下,猪都能飞.当今中国股市牛市,真可谓"错过等七年". 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价. 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票.若两次交易机会都放弃,收益为0. 设计算法,计算你能获得的最大收益. 输入数值范围:2<=n<=100,0<=prices[i]<=100 输入例子: 3,8,

2015腾讯暑期实习笔试题目

2015腾讯暑期实习笔试题目 (1).层次遍历序列为ABCDEFG的二叉树,其中序遍历的序列是什么? (2).ABCABC为入栈的顺序,倘若出栈的顺序为ABCCBA,那么,设栈的操作为PUSH和POP,则PUSH和POP的可能序列是什么? (3).使用顺序数组存储堆,90,31,53,23,16,48:16,31,23,90,53,48:这两个序列是否符合堆的定义. (4).稀疏矩阵的存储结构可以是什么? (5).根据后序遍历和中序遍历的序列,如何恢复此二叉树. (6).Linux常用命令:ls

诺基亚(Microsoft Devices Group)2014暑期实习生笔试题知识点

总结一下Microsoft Devices Group的软件类笔试题,所有笔试题分两份试卷,逻辑题一份和软件测试题一份,只总结技术题喽~题目全英文,只包含选择题和填空题,选择题居多,分单选和多选,多选题题目会标注出来.总体来说考察的很基础也很细节,难度适中.下面把记得的一些知识点总结一下下: *命名管道的定义. *主机A发送IP数据报给主机B,途中经过了5个路由器.试问在IP数据报的发送过程总共使用几次ARP(6次) *Linux系统下,给一个文件重命名(mv A,B) *考察无符号整型数和有符

趋势科技2014年暑期实习生笔试题

题目: 有81匹赛马,9个赛道可以利用,每匹赛马的速度是恒定的,不计时但记录每场的名次,请问,赛几次可以得到前5名? 解答: 首先把81匹马分为9组,赛九场,然后把每场的第一名拿出来(刚好9匹),赛一场,得到前五名所在的组(后四名的组果断排除).此时可以确定第一名.然后在第一名的组中抽取2-5名(共四匹马),在第二名的组中抽取2-4名(共三匹马),在第三名的组中抽取2-3(共两匹马),在第四名的组中抽取第2名(共一匹马),此时剩下的马匹有(4+3+2+1+4=14匹),取14中的9匹赛一场,得到

我的阿里、腾讯暑期实习Offer经历

三四月份对我拿来说是个忙碌的两个月,实验室项目到了关键的时刻,自己又需要抽身去找暑期实习,总之过得很快.值得欣慰的是幸运的拿到了阿里和腾讯的暑期实习offer,也算是对三四月份的忙碌一些回报吧.阿里的实习内推很快就来了,3月份就差不多全部结束了,腾讯稍微晚一些,原本也投了百度,想试试百度的难度,可惜笔试当天晚上要出差飞广州,也就错过了百度的笔试,对我来说,北京的诱惑并没有非常的强烈,对我的吸引力不算太强,北京的压力型节奏的生活方式让我总觉得会踹不过气,也就不了了之了.拿到阿里和腾讯的实习offe

腾讯2014实习生笔试题--德梅齐里亚克砝码问题

问题 珠宝商甲需要去鉴定一批41克以下的宝石(可能是41克以下不包括41克的任意重量),他只能携带一个天平和四个砝码去称重,请问他会携带那些重量的砝码?-----2014腾讯暑期实习生附加题第一题 解答: 首先给出问题的答案,聪明的人看到答案的形式就能猜到其中的规律:1,1*2+1=3,(1+3)*2+1=9,(1+3+9)*2+1=27. 德梅齐里亚克砝码问题问题描述: 一位商人有一个40磅的砝码,由于跌落在地而碎成4块.后来,称得每块碎片的重量都是整磅数,而且可以用这4块来称从1至40磅之间

笔试题81. 腾讯2017暑期实习生笔试题

今天有点累,不如来个刷个题吧,记得参加腾讯在线笔试的时候遇到过一道题,确实比较懵,所以今天就好好的想了想,这个题来自牛客网... 看到这个图的时候相信大家明白了吧,就是这个题,我一直没有思路,今天突然想起来了,所以就准备解决它.其实这个题主要是运用一个算法思路来解决,最长公共子序列. 仔细想一想,将字符串逆序后与原来的字符串求最长公共子序列不就是这个构造回文吗?这应该很好理解吧,下面简单科普一下最长公共子序列:这中序列不是连续的,意思是可以有间隔,去掉那些干扰项以后,两个序列完全相同,而且要求这