zoukankan      html  css  js  c++  java
  • 熊分苹果的问题

         今天参加笔试,遇见一道编程题,给定一个1~9的整数N代表熊的数目,每只熊按照如下方式分苹果:先将苹果平均分为N份,再扔掉一个。要求输出最少的苹果总数?

    思路1:逐层向下,设总数为X,则第一次每一份为(X-1)/N个苹果,第二次为((N-1)*((X-1)/N)-1)/N,依次类推.......,发现到最后由于嵌套的层数过多,已经被弄晕了,果断换方法。

    思路2:(采取补苹果的方法)由题描述,因为要扔一个苹果,所以扔一个苹果==补N-1个苹果,因此第一个熊得到的苹果数为(X+N-1)/N,第二个熊得到的为(N-1)*(X+N-1)/(N*N),。。。。第N个熊为(N-1)的(N-1)次方*(X+N-1)/N的N次方。

              由于熊肯定得到的是整数个苹果,所以第N个熊的苹果数(N-1)的(N-1)次方*(X+N-1)/N的N次方必为一个整数。很显然(N-1)的(N-1)次方/N的N是不可能整除的,因此(X+N-1)必为N的N次方的整数倍,我们主需要去尝试当(X+N-1) = k倍的N的N次方即可,k从1开始走起,遇到第一个满足(X+N-1) = k倍的N的N次方的k时,对应的x即为最少的苹果数。

    基于上面思想:有如下代码

  • 相关阅读:
    poj2679
    poj2709
    poj1521
    poj2054
    静脉曲张病案
    眩晕耳鸣病案
    声嘶治验
    甘露消毒丹治疗高热不退一例
    黄芩汤加减治疗腹痛一例
    自残症治愈案
  • 原文地址:https://www.cnblogs.com/llf-hwj/p/4820411.html
Copyright © 2011-2022 走看看