小q的父母要出差n天,走之前給小q留下了m塊巧克力。小q決定每天吃的巧克力數量不少於前一天吃的一半,但是他又不想在父母回來之前的某一天沒有巧克力吃,請問他第一天最多能吃多少塊巧克力
輸入描述:
每個輸入包含乙個測試用例。輸出描述:每個測試用例的第一行包含兩個正整數,表示父母出差的天數n(n<=50000)和巧克力的數量m(n<=m<=100000)。
輸出乙個數表示小q第一天最多能吃多少塊巧克力。輸入例子1:
3 7輸出例子1:
4思路:
我們可以利用二分的思想找到滿足題意(就是條件1,後一天吃的巧克力的個數至少為前一天的一半;條件二,需要在父母出差的這幾天每天都有巧克力吃的到)得第一天吃得巧克力得個數。
舉例1:
n=3 m=7
我們有七塊巧克力
1 2 3 4 5 6 7
首先我們找到中間位置的巧克力個數(向上取整)(1+7+1)/2=4
就是4位置的巧克力
然後我們以它作為第一天的起始巧克力個數對這些天所需要的總巧克力個數進行求和,最終的結果總巧克力數目如果等於m那麼直接返回4,如果小於m,那麼可能存在更優的解在[5,7]區間內,那麼需要在5位置到7位置中間位置繼續做相同的操作。
如果大於m,那麼證明我們第一天給的巧克力的數目太多了,需要在[1-3]區間內繼續找合適的解。
**如下:
#includeusing namespace std;
int n, m;
int sum(int &mid)
return total;
}int fun()
else if (bool_int < m)
else
}return r;
}int main()
結果:
貪吃的小q
牛客題目 小q的父母要出差n天,走之前給小q留下了m塊巧克力。小q決定每天吃的巧克力數量不少於前一天吃的一半,但是他又不想在父母回來之前的某一天沒有巧克力吃,請問他第一天最多能吃多少塊巧克力 輸入描述 每個輸入包含乙個測試用例。每個測試用例的第一行包含兩個正整數,表示父母出差的天數n n 50000...
貪吃的小Q
小q的父母要出差n天,走之前給小q留下了m塊巧克力。小q決定每天吃的巧克力數量不少於前一天吃的一半,但是他又不想在父母回來之前的某一天沒有巧克力吃,請問他第一天最多能吃多少塊巧克力 輸入描述 每個輸入包含乙個測試用例。每個測試用例的第一行包含兩個正整數,表示父母出差的天數n n 50000 和巧克力...
騰訊 貪吃的小Q
小q的父母要出差n天,走之前給小q留下了m塊巧克力。小q決定每天吃的巧克力數量不少於前一天吃的一半,但是他又不想在父母回來之前的某一天沒有巧克力吃,請問他第一天最多能吃多少塊巧克力 輸入描述 每個輸入包含乙個測試用例。每個測試用例的第一行包含兩個正整數,表示父母出差的天數n n 50000 和巧克力...