• An Easy Problem


     

    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1223
    时间限制: 1000 ms         内存限制: 65536 KB

    【题目描述】

    给定一个正整数N,求最小的、比N大的正整数M,使得M与N的二进制表示中有相同数目的1。

    举个例子,假如给定的N为78,其二进制表示为1001110,包含4个1,那么最小的比N大的并且二进制表示中只包含4个1的数是83,其二进制是1010011,因此83就是答案。

     

    【输入】

    输入若干行,每行一个数n(1<=n<=1000000),输入"0"结束。

    【输出】

    输出若干行对应的值。

    【输入样例】

    1
    2
    3
    4
    78
    0
    

    【输出样例】

    2
    4
    5
    8
    83
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int bian(int n)
    {
        int ans=0;
        while(n)
        {
            if(n%2)ans++;
            n/=2;
        }
        return ans;
    }
    int main()
    {
        int n;
        while(cin>>n)
        {
            if(!n)break;
            int t=bian(n);
            for(int i=n+1;;i++)
            {
                if(bian(i)==t)
                {
                    cout<<i<<endl;
                    break;
                }
            }
        }
    }
  • 相关阅读:
    blocksit
    getdata
    ASP.net 探针
    301重定向
    webapi
    Unity NGUI UIPanel下对粒子的剪裁
    unity3d 之本地推送
    c#之时间戳与DateTime的相互转换
    c#之从服务器下载压缩包,并解压
    Unity3d 开发之 ulua 坑的总结
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/7858214.html
Copyright © 2020-2023  润新知