2019 5 11 海淀區賽之杯子

2022-05-08 20:15:09 字數 1133 閱讀 5746

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即可

#includeusing

namespace

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。...