程序员人生 网站导航

BZOJ-1192-鬼谷子的钱袋

栏目:php教程时间:2015-03-28 08:43:27

描写

鬼谷子非常聪明,正由于这样,他非常繁忙,常常有各诸侯车的特派员前来向他咨询时政。有1天,他在咸阳游历的时候,朋友告知他在咸阳最大的拍卖行(聚宝商行)将要举行1场拍卖会,其中有1件宝物引发了他极大的兴趣,那就是无字天书。但是,他的行程安排得很满,他他已买好了去邯郸的长途马车标,不巧的是动身时间是在拍卖会快要结束的时候。因而,他决定事前做好准备,将自己的金币数好并用1个个的小钱袋装好,以便在他现有金币的支付能力下,任何数目的金币他都能用这些封闭好的小钱的组合来付账。鬼谷子也是1个非常节俭的人,他千方百计使自己在满足上述要求的条件下,所用的钱袋数最少,并且不有两个钱袋装有相同的大于1的金币数。假定他有m个金币,你能猜到他会用多少个钱袋,并且每一个钱袋装多少个金币吗?


分析

  • 可能有点水, 但这类题做的很少, 还是练习1下比较好
  • 斟酌2进制
  • 任何数都可用2的幂次方加和得到.
  • 那末把m个金币拆成几个2的幂次方的数就能够凑出任何 1~m 之间的数了. 但是不1定会正好, 把剩下的钱拆成单唯一份, 答案就是第1个大于m的2^n的那个n. 那如果正好拆完呢? 由于最后1份不可以是m, 所以还是要把m拆开, 结果还是1样.
  • 为何是2进制不是其他进制呢? 由于任何数都可用2的幂次方加和得到. 但其他的就不1定了.

代码

https://code.csdn.net/snippets/612326

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐