#include
using namespace std;
int f(int n) {
int cnt = 0;
while (n > 0) {
if (n % 2 == 1) cnt++;
n /= 2;
}
return cnt;
}
int main() {
int n, cnt;
while (scanf("%d", &n) && n) {
cnt = f(n);
while (true) {
n++;
if (f(n) == cnt) break;
}
printf("%d\n",n);
}
return 0;
}
提交后时间超限86分,是什么原因?(这个网站代码前面加O2提交等于没加)
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define INF 999999999
#define N 1001
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n)
{
int cnt=0;
int temp=n;
while(temp>0)
{
if(temp%2)
cnt++;
temp/=2;
}
int sum=0;
while(1)
{
temp=++n;
while(temp>0)
{
if(temp%2)
sum++;
temp/=2;
}
if(cnt==sum)
{
cout<<n<<endl;
break;
}
sum=0;
}
}
return 0;
}
int main()
{
int n;
cin >> n;
int i = 0;
int nz = 0;
int no = 0;
bool bo=false;
bool bz=false;
for (i = 0; i < 32; i++) {
if(n&(1<<i))
no++;
if (n & (1 << i)&&!bo) {
bo=true;
}
if (((n & (1 << i)) == 0) && bo) {
nz=i;
break;
}
}
auto x=(0xffffffff<<nz);
n=n&x;
n=n|(1<<nz);
for (int i = 0; i < no-1; i++) {
n=(n|1<<i);
}
cout<<n;
}
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define INF 999999999
#define N 1001
using namespace std;
int main() {
int n;
while(scanf("%d",&n)!=EOF&&n) {
int asd=0;
int temp=n;
while(temp>0) {
if(temp&1)
asd++;
temp>>=1;
}
int sum=0;
while(1) {
temp=++n;
while(temp>0) {
if(temp&1)
sum++;
temp>>=1;
}
if(asd==sum) {
cout<<n<<endl;
break;
}
sum=0;
}
}
}