#include<stdio.h>
void main()
{
int x,z,sum=0;
scanf("%d",&x);
for(x,z=1;x!=0;x/2,z*10)
{
sum+=((x%2)*z);
}
printf("%d",sum);
}
我的程序是这样,运行时间1934ms怎样才能把运行时间限制在1000ms以下
不要用求余和除法,改为位操作
x/2改为 x=x>>1
另外你的代码不对啊,for语句最后应该是x=x/2,z=z*10,否则死循环啊
再说你的sum用int型也太小啦。11个1就溢出了
#include<iostream>
using namespace std;
void main()
{
int n,i,j=0;
int a[1000];
cin>>n;
i=n;
while(i)
{
a[j]=i%2;
i/=2;
j++;
}
for(i=j-1;i>=0;i--)
cout<<a[i];
cout<<endl;
}