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 flag;
}
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;
}

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

原文地址:https://www.cnblogs.com/Grigory/p/10159642.html