京东面试

1.10个箱子,每个箱子10个苹果,其中一个箱子的苹果均为9两/个,其他的都是1斤/个,要求利用一个秤,只称一次,找出那个9两/个的箱子。(京东题)
解法:10个箱子排好顺序,编号为1至10,
从第一个箱子中取出1个苹果,
从第二个箱子中取出2个苹果,
从第三个箱子中取出3个苹果,
以此类推,得到一堆苹果,放到秤上面称。如果10个箱子的中的苹果重量都是一样,那么总的重量为1+2+3+4+…+10=55。
①第一个箱子中是重量不足的箱子,那么最后总的秤重量是54.9,用标准的重量55减去54.9,结果55-54.9=0.1,那么就是第一个箱子。
②第二个箱子中是重量不足的箱子,那么最后总的秤重量是54.8,用标准的重量55减去54.9,结果55-54.8=0.2,那么就是第二个箱子。
③第三个箱子中是重量不足的箱子,那么最后总的秤重量是54.7,用标准的重量55减去54.9,结果55-54.7=0.3,那么就是第三个箱子。
那么以此类推就可以得到是那个箱子中的苹果重量不足。

2.有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡
现有10只小白鼠,在24小时内鉴别出哪瓶水有毒,请解释具体做法。(搜狐题)
解法:将1000瓶水排行顺序,按照二进制编码,如下,
给1000个瓶分别标上如下标签(10位长度):
0000000001 (第1瓶)
0000000010 (第2瓶)
0000000011 (第3瓶)
…..
1111101000 (第1000瓶)

从编号最后1位是1的所有的瓶子里面取出1滴混在一起(比如从第一瓶,第三瓶,.里分别取出一滴混在一起)并标上记号为1.以此类推,从编号第一位是1的所有的瓶子里面取出1滴混在一起并标上记号为10.现在得到有10个编号的混合液,小白鼠排排站,分别标上10,9,.1号,并分别给它们灌上对应号码的混合液.24小时过去了,过来验尸吧:
从左到右,死了的小白鼠贴上标签1,没死的贴上0,最后得到一个序号,把这个序号换成10进制的数字,就是有毒的那瓶水的编号.
检验一下:假如第一瓶有毒,按照0000000001 (第1瓶),说明第1号混合液有毒,因此小白鼠的生死符为0000000001(编号为1的小白鼠挂了),0000000001二进制标签转换成十进制=1号瓶有毒;假如第三瓶有毒,0000000011 (第3瓶),第1号和第2号混合液有毒,因此小白鼠的生死符为00000011(编号为1,2的鼠兄弟挂了),0000000011二进制标签转换成十进制=3号瓶有毒.

其实这个题目可以简化一下,有4瓶水,2只老鼠,这样简化可能更加理解这个算法。

3.编程序,求1!+(1!+3!)+(1!+3!+5!)+(1!+3!+5!+7!)+…..的和。(搜狐题)

public int sum1(int n){
        int sum = 0;
        for(int i = 1;i<n;i+=2){ //大括号的相加
            int sum1= 0;
            for(int m =1;m<=i;m+=2){//每个括号内的相加
                int k = 1;
                for(int j = 1;j<=m;j++){ //阶乘
                    k*=j;
                }
                sum1+=k;
            }
            sum+=sum1;
        }
        return sum;
    }

4.斐波那契数列求和。

public int fn1(int n){
        if(n <=1){
            return 1;
        }else{
            return fn1(n-1)+fn1(n-2);
        }
    }

———–路漫漫其修远兮,吾将上下而求索。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值