求教:简单问题超时,有解决办法么?
问题,输入整数N,转化为二进制后,从末尾向高位,遇到第一个1时,截取后面部分,转化为十进制输出。程序以0作为结束符样例,
input 26
output 2
intput 8/*转化二进制后是1000*/
output 8
input 0
结束
我的代码如下:
#include"stdio.h"
int main()
{int i,n,j;
long b;
while(getchar()!=EOF)
{scanf("%d",&n);
if(n==0) return;
b=1;
while(n%2==0)
{ n=n/2;
b*=2;}
printf("%ld\n",b); } }