time limit: 10 sec memory limit: 162 mb
submit: 3223 solved: 2333
鬼谷子非常聰明,正因為這樣,他非常繁忙,經常有各諸侯車的特派員前來向他諮詢時政。有一天,他在咸陽遊歷的時候,朋友告訴他在咸陽最大的拍賣行(聚寶商行)將要舉行一場拍賣會,其中有一件寶物引起了他極大的興趣,那就是無字天書。但是,他的行程安排得很滿,他他已經買好了去邯鄲的長途馬車標,不巧的是出發時間是在拍賣會快要結束的時候。於是,他決定事先做好準備,將自己的金幣數好並用乙個個的小錢袋裝好,以便在他現有金幣的支付能力下,任何數目的金幣他都能用這些封閉好的小錢的組合來付賬。鬼谷子也是乙個非常節儉的人,他想方設法使自己在滿足上述要求的前提下,所用的錢袋數最少,並且不有兩個錢袋裝有相同的大於1的金幣數。假設他有m個金幣,你能猜到他會用多少個錢袋,並且每個錢袋裝多少個金幣嗎?
包含乙個整數,表示鬼谷子現有的總的金幣數目m。其中,1≤m ≤1000000000。
只有乙個整數h,表示所用錢袋個數
3
2
/*心若向陽,無言悲傷據說這是最正確的解法,二進位制所有的錢袋都可以看成乙個取或不取的情況。
那麼這些錢袋取或不取就可以看作0或1,也就是說,要使用一些數字表示乙個範圍裡的所有數
同時這又很二進位制(取或不取)。
所以我們就把錢袋裡錢的數量定為2^n個。話說這種思路我怎麼不明白原理額。。。。
*/#include
intmain()
/*所以還是這種亂搞的方法好啊,簡潔通俗易懂還能通過!
其實這題並沒有想象中地那麼複雜
我們可以假象一下 若m=12 則需要求得組合方案有(1 2 3 4 ……12)
我們可以把他們分成兩份 (1 2 …… 6) (7 8 ……12)稱左邊的為l 右邊的為r
很容易得知r中的每種方案都可以由(12/2)+左邊的組合得出
再次分成兩份(1 2 3)(4 5 6)
同理 當m為奇數時 顯而易見地 只需把 (m/2)改為(m/2+1) 即可
*/#include
#include
using
namespace
std;
long
long
n,m,ans,tot;
int a[1000001];//
陣列記錄每個錢袋裝的錢數,隨時準備輸出!哈哈
intmain()
printf(
"%d\n
",tot+1
);
return0;
}
鬼谷子的錢袋
題目描述 鬼谷子非常聰明,正因為這樣,他非常繁忙,經常有各諸侯車的特派員前來向他諮詢時政。有一天,他在咸陽遊歷的時候,朋友告訴他在咸陽最大的拍賣行 聚寶商行 將要舉行一場拍賣會,其中有一件寶物引起了他極大的興趣,那就是無字天書。但是,他的行程安排得很滿,他已經買好了去邯鄲的長途馬車票,不巧的是出發時...
BZOJ 1192 鬼谷子的錢袋
鬼谷子非常聰明,正因為這樣,他非常繁忙,經常有各諸侯車的特派員前來向他諮詢時政。有一天,他在咸陽遊歷的時候,朋友告訴他在咸陽最大的拍賣行 聚寶商行 將要舉行一場拍賣會,其中有一件寶物引起了他極大的興趣,那就是無字天書。但是,他的行程安排得很滿,他他已經買好了去邯鄲的長途馬車標,不巧的是出發時間是在拍...
Bzoj1192 鬼谷子的錢袋
time limit 10 sec memory limit 162 mb submit 3312 solved 2412 submit status discuss 鬼谷子非常聰明,正因為這樣,他非常繁忙,經常有各諸侯車的特派員前來向他諮詢時政。有一天,他在咸陽遊歷的時候,朋友告訴他在咸陽最大的拍...