• 【BZOJ 1192】[HNOI2006]鬼谷子的钱袋


    【链接】 我是链接,点我呀:)
    【题意】

    在这里输入题意

    【题解】

    设k为最大的正整数满足 $2^0+2^1+...+2^k<=m$ 如果$m>2^0+2^1+...+2^k$ 那么只用$2^0,2^1,...2^k$和$m-(2^0+2^1+...+2^k)$这k+2个数就能表示出0..m这m+1个数字了。 (原理自己想 (不过我还不是很明白那个$m-(2^0+2^1+...+2^k)$是否会和前面的2次方数字重复 (不过因为AC了,所以肯定是不会重复了。那么就记住这个结论吧。 如果m=... 那么只用$2^0,2^1,...2^k$这k+1个数字就能表示0..m这m+1个数字了。

    【代码】

    #include <bits/stdc++.h>
    #define LL long long
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    #define rep2(i,a,b) for (int i = a;i >= b;i--)
    #define all(x) x.begin(),x.end()
    #define pb push_back
    #define lson l,mid,rt<<1
    #define rson mid+1,r,rt<<1|1
    using namespace std;
    
    const double pi = acos(-1);
    const int dx[4] = {0,0,1,-1};
    const int dy[4] = {1,-1,0,0};
    
    int m;
    
    int main(){
    	#ifdef LOCAL_DEFINE
    	    freopen("rush_in.txt", "r", stdin);
    	#endif
        scanf("%d",&m);
        int now = 1;
        int cnt = 0;
        while (now<=m){
            cnt++;
            m-=now;
            now*=2;
        }
        if (m) cnt++;
        printf("%d
    ",cnt);
    	return 0;
    }
    
    
  • 相关阅读:
    ちょっとした難しい言葉まとめ②
    objective -c 知識点
    Viewing the Raw SQL Statement(xcode で)
    ちょっとした難しい言葉まとめ③
    ちょっとした難しい言葉まとめ④
    7.25 8figting!
    7.25 7figting!
    7.25 6figting!
    7.25 5
    7.25 4
  • 原文地址:https://www.cnblogs.com/AWCXV/p/8596965.html
Copyright © 2020-2023  润新知