POJ 2453 An Easy Problem G++
阿新 • • 發佈:2018-11-04
#include <iostream> #include <bitset> #include <vector> using namespace std; int main() { vector<int> jg; while(1) { bitset<21> foo; long long a; cin>>a; if(a==0) { break; } foo=a; int j=0; for(int i=0;i<21;i++) { if((foo[i]==1)&&(foo[i+1]==0)) { foo[i+1]=1; foo[i]=0; break; }else if((foo[i]==1)&&(foo[i+1]==1)) { foo[i]=0; foo[j]=1; j++; } } a=0; long long b=1; for(int i=0;i<21;i++) { a=a+foo[i]*b; b=b*2; } jg.push_back(a); } for(int i=0;i<jg.size();i++) { cout<<jg[i]<<endl; } return 0; }
求在二進位制中和給出數 1 同樣多,且比給出數大的最小數。