微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Refrain

贪心...我都好奇自己当时没事干怎么就学了贪心...

当然尽管这样23道题我也没写完...

正如gg所说:我们要不厌其烦地写题解。(当然不存在的

1455:An Easy Problem

As we kNown,data stored in the computers is in binary form. The problem we discuss Now is about the positive integers and its binary form.

Given a positive integer I,you task is to find out an integer J,which is the minimum integer greater than I,and the number of ‘1‘s in whose binary form is the same as that in the binary form of I.

For example,if "78" is given,we can write out its binary form,"1001110". This binary form has 4 ‘1‘s. The minimum integer,which is greater than "1001110" and also contains 4 ‘1‘s,is "1010011",i.e. "83",so you should output "83".
输入One integer per line,which is I (1 <= I <= 1000000).

A line containing a number "0" terminates input,and this line need not be processed.
输出One integer per line,which is J.
其实这题就是把一个数转换为二进制,1的数量要求一样,要得到比给定数大的最小的数。
所以只要统计出有多少个一就好了。
不想解释别的了qwqqqqq
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int gcd(int n)
{
    int flag=0;
    while(n)
    {
        if(n%2)
        {
            flag++;
        }
        n/=2;
    }
    return ans;
}
int main()
{
    int n;
    while(cin>>n)
    {
        if(!n)break;
        int t=gcd(n);
        for(int i=n+1; ;i++)
        {
            if(gcd(i)==t)
            {
                cout<<i<<endl;
                break;
            }
        }
    }
    return 0;
}

我们称之为路的,无非是踌躇。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐