emmmm區賽唯一一道ac的題
題目描述
小明買了n個容積可以是無窮大的杯子,剛開始的時候每個杯子裡有1公升水, 接著小明發現杯子實在太多了,於是他決定保留不超過k個杯子。每次他選擇兩 個當前含水量相等的杯子,把乙個杯子的水全部倒進另乙個裡,然後把空瓶丟棄。
(不能丟棄有水的杯子) 顯然在有些情況下小明無法達到他的目標,比如n=3,k=1。此時小明會重
新買一些新的杯子(新杯子容積無限,開始時有1公升水),以達到目標。 現在小明想知道,最少需要買多少個新杯子才能達到目標呢?
輸入一行兩個正整數,n,k(1≤n≤1000000000,k≤1000)。
輸出乙個非負整數,表示最少需要買多少新杯子。
樣例輸入
1000000 5
樣例輸出
15808
提示【資料範圍】
對於50%的資料,n≤10000000; 對於100%的資料如題目。
經過模擬 我們很容易發現 杯子內的水從1到2到4的過程很像2進製的加減法有沒有??
所以大致思路就是 把n轉化成2進製 某一位上為1說明存在乙個杯子內有該位表示的數這麼多的水
也就是說 n的二進位制表示n的最後狀態
我們只需要從後往前數k位 記錄該位表示的數為cnt 通過將前面所有的數加一些1變為cnt即可
#includeusingnamespace
std;
long
long n,k,a[100005
],idx,cnt,flag,flag1;
intmain()
for(long
long i=1;i<=idx;i++)
if(a[i])cnt++;
if(cnt<=k)
long
long cnt1=0
;
for(long
long i=idx;i>=1;i--)
}cnt1=0,tmp=1
;
for(long
long i=1;i<=flag;i++)
printf(
"%lld
",flag1-cnt1);
return0;
}
海淀區上地 北京海淀上地街道拆除違規戶外廣告牌
綜合行政執法隊啟動專項行動 統一規範轄區內所有商業廣告牌匾 海淀上地街道拆除違規戶外廣告牌 近日,北青報記者跟隨執法人員來到輝煌國際大廈。該大廈位於海淀區上地十街,是一棟商住兩用樓宇,樓內存在大量商家。一些樓內店鋪為了招攬顧客,將廣告牌匾設定在樓宇外面,甚至有的商戶設定多塊牌匾。這些牌匾隨意貼上在樓...
藍橋盃國賽之階乘位數
9的階乘等於 362880 它的二進位制表示為 1011000100110000000 這個數字共有19位。請你計算,9999 的階乘的二進位制表示一共有多少位?注意 需要提交的是乙個整數,不要填寫任何無關內容 比如說明解釋等 思路 把每乙個數都用2的x的方,然後把2的指數加起來就可以了,最後取整 ...
藍橋杯省賽之遞增三元組
給定三個整數陣列 a a1,a2,an b b1,b2,bn c c1,c2,cn 請您統計有多少個三元組 i,j,k 滿足 1.1 i,j,k n 2.ai 輸入格式 第一行包含乙個整數n 第二行包含 個整數a1,a2,an。第三行包含 個整數b1,b2,bn。第四行包含 個整數c1,c2,cn。...