「Bzoj 1192」「HNOI2006」鬼谷子的钱袋 (找规律)

Bzoj 1192
很容易发现把$m$转为二进制,所需要的袋数就是二进制的位数
这里有一个特别重要的:二进制下两个$2$的平方数的位数是不变的。并且这中间的所有数都可以由这几位二进制表示。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define ms(i, j) memset(i, j, sizeof i)
#define LL long long
#define db double
using namespace std;
LL m; 
void clean() {}
void solve() {
    clean();
    LL ans = 0;
    while (m) ans++, m >>= 1;
    printf("%lld\n", ans);
}
int main() {
    #ifndef ONLINE_JUDGE 
    freopen("1.in", "r", stdin);freopen("1.out", "w", stdout);
    #endif
    scanf("%lld", &m), solve();
    return 0;
}
------ 本文结束 ------