1. 程式人生 > >[思考題] [HAOI2006] [bzoj1192]鬼谷子的錢袋

[思考題] [HAOI2006] [bzoj1192]鬼谷子的錢袋

sca tdi cst 為我 class 題目 要求 unsigned 頹廢

題目梗概

有m個金幣,要放進n個袋子裏面。要求這些袋子必須可以組成1-m這些個金幣的情況下數量最少。

思考

一開始以為是遞推啥的,但是轉念一想應該用二進制來表示1-m這些數的,不重復而且每一個十進制數都可以用二進制數來表示。

#include <cstdio>
#include <cmath>
int main(){
    unsigned int m;
    scanf("%d",&m);
    m = log2(m);
    printf("%d",m+1);
    return 0;
}

吐槽

洛谷的題目需要輸出方案,所以略坑。 因為5 按照劃分應該是 1 2 2 但是不符合規則 所以需要特判 1 1 3

最後說點題外話,最近沒怎麽寫題目了。不是因為我頹廢了,而且傷病在身,沒法上機。只能拿手機看看題目,想想思路。

[思考題] [HAOI2006] [bzoj1192]鬼谷子的錢袋