首页 > 代码库 > [思考题] [HAOI2006] [bzoj1192]鬼谷子的钱袋

[思考题] [HAOI2006] [bzoj1192]鬼谷子的钱袋

题目梗概

有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]鬼谷子的钱袋