📄 zoj2449.cpp
字号:
#include<iostream>
#include<string>
using namespace std;
void getlast(long long &l, int &o, int &z) {
o=0;
z=0;
if (l!=0) {
while (l%2==0) {
l/=2;
z++;
};
while (l%2==1) {
l/=2;
o++;
};
};
}
void putbits(long long &l, int o, int z) {
while (z>o+1) {
l*=2;
z--;
};
while (z>1) {
l=(l*2+1)*2;
z--;
o--;
}
l*=2;
}
long long crunchbits(long long l) {
int o,z;
getlast(l,o,z);
if (l==0)
putbits(l,o,z);
else {
l++;
o--;
z++;
putbits(l,o,z);
}
return l;
}
int main() {
long long n;
while(scanf("%l64d",&n),n>=0) {
printf("%l64d\n",crunchbits(n));
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -