日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bzoj1992鬼谷子的钱袋(二分乱搞 二进制)

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj1992鬼谷子的钱袋(二分乱搞 二进制) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1192: [HNOI2006]鬼谷子的錢袋

Time Limit:?10 Sec??Memory Limit:?162 MB
Submit:?3223??Solved:?2333

Descriptio

鬼谷子非常聰明,正因為這樣,他非常繁忙,經常有各諸侯車的特派員前來向他咨詢時政。有一天,他在咸陽游歷的時候,朋友告訴他在咸陽最大的拍賣行(聚寶商行)將要舉行一場拍賣會,其中有一件寶物引起了他極大的興趣,那就是無字天書。但是,他的行程安排得很滿,他他已經買好了去邯鄲的長途馬車標,不巧的是出發時間是在拍賣會快要結束的時候。于是,他決定事先做好準備,將自己的金幣數好并用一個個的小錢袋裝好,以便在他現有金幣的支付能力下,任何數目的金幣他都能用這些封閉好的小錢的組合來付賬。鬼谷子也是一個非常節儉的人,他想方設法使自己在滿足上述要求的前提下,所用的錢袋數最少,并且不有兩個錢袋裝有相同的大于1的金幣數。假設他有m個金幣,你能猜到他會用多少個錢袋,并且每個錢袋裝多少個金幣嗎?

Input

包含一個整數,表示鬼谷子現有的總的金幣數目m。其中,1≤m ≤1000000000。

Output

只有一個整數h,表示所用錢袋個數

Sample Input

3

Sample Output

2 /*據說這是最正確的解法,二進制所有的錢袋都可以看成一個取或不取的情況。那么這些錢袋取或不取就可以看作0或1,也就是說,要使用一些數字表示一個范圍里的所有數同時這又很二進制(取或不取)。所以我們就把錢袋里錢的數量定為2^n個。話說這種思路我怎么不明白原理額。。。。 */ #include<cstdio> int main() {int m,tot=0,ans[30];scanf("%d",&m);for(;m>>1;m>>=1)ans[++tot]=(m>>1)+(m&1);printf("%d\n",tot+1); } /*所以還是這種亂搞的方法好啊,簡潔通俗易懂還能通過! 其實這題并沒有想象中地那么復雜我們可以假象一下 若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<iostream> #include<cstdio>using namespace std; long long n,m,ans,tot; int a[1000001];//數組記錄每個錢袋裝的錢數,隨時準備輸出!哈哈 int main() {scanf("%d",&n);while(n/2!=0){tot++;if(n%2==0)a[tot]=n/2;if(n%2==1)a[tot]=n/2+1;n/=2;}printf("%d\n",tot+1);return 0; } 心若向陽,無言悲傷

?

轉載于:https://www.cnblogs.com/L-Memory/p/6192902.html

總結

以上是生活随笔為你收集整理的bzoj1992鬼谷子的钱袋(二分乱搞 二进制)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。