爱买手办的张三

爱买手办的张三

https://ac.nowcoder.com/acm/problem/206648

题目:爱买手办的张三
来源:2020年第十四届山东大学程序设计竞赛(重现赛)

解题思路

题目要求:给定非负整数
的最小值,并递增列出 ;求 的最大值,并递增列出 ,其中

显然,

用二进制表示,为 0 的位置上 在该位置必须为 0,为 1 的位置上 在该位置可以是 1 或者 0。
所以,求出 的二进制表示有 个 1,

C++代码

#include<iostream>
#include<bitset>
#include<vector>
#include<cmath>
using namespace std;

int main(){
    int Y;
    cin >> Y;
    cout << 1 << endl;
    cout << Y << endl;
    bitset<32> y(Y);
    int k = y.count();
    cout << pow(2, k) << endl;
    cout << 0 << endl;
    vector<int> cnt;
    for(int i=0; i<32; ++i){
        int sum = 0;
        if(y[i] == 1){
            sum += pow(2, i);
            cout << sum << endl;
            int n = cnt.size();
            cnt.push_back(sum);
            for(int j=0; j<n; ++j){
                cnt.push_back(sum + cnt[j]);
                cout << cnt.back() << endl;
            }
        }
    }
    return 0;
}
全部评论

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务