//贪心算法
//描述
//
//众所周知,存储在计算机中的数据是二进制形式。我们现在讨论的问题是关于正整数及其二进制形式。
//
//给定一个正整数I,你的任务是找出一个整数J,它是大于I的最小整数,并且其二进制形式的'1'的数量与I的二进制形式相同 1001110。
//
//这种二进制形式有4个'1'。最小整数大于“1001110”并且还包含4 '1',是“1010011”,即“83”,因此您应该输出“83”。
#include<iostream>
using namespace std;
int main(){
int n,ans,s,t;
while(cin>>n){
if(n==0) return 0;
ans=0;
t=n;
while(t>0){
if(t%2==1) ans++;
t/=2;
}
s=0;
for(;;){
t=n++;
while(t>0){
if(t%2==1) s++;
t/=2;
}
if(ans==s){
cout<<n<<endl;
break;
}
s=0;
}
}
return 0;
}
An easy problem1455 poj2453
最新推荐文章于 2024-07-12 16:34:36 发布