标题:求教:简单问题超时,有解决办法么?
只看楼主
huicpc0876
Rank: 2
等 级:论坛游民
帖 子:69
专家分:50
注 册:2009-7-24
结帖率:92.59%
已结贴  问题点数:20 回复次数:5 
求教:简单问题超时,有解决办法么?
问题,输入整数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); } }
搜索更多相关主题的帖子: 简单问题 办法 超时 
2009-07-27 21:57
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
得分:20 
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int n;

    while (scanf("%d", &n) != EOF && n != 0)
        printf("%d\n", (-n)&n);

    return 0;
}

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-07-27 22:28
huicpc0876
Rank: 2
等 级:论坛游民
帖 子:69
专家分:50
注 册:2009-7-24
得分:0 
回复 2楼 StarWing83
程序很简洁,但请教下
 (-n)&n;是什么意思啊?
2009-07-27 22:57
huicpc0876
Rank: 2
等 级:论坛游民
帖 子:69
专家分:50
注 册:2009-7-24
得分:0 
回复 2楼 StarWing83
上面是按位与,我知道了,但你怎么想到的,太天才了!~~
2009-07-27 23:20
lin52045
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:113
注 册:2009-7-24
得分:0 
回复 2楼 StarWing83
实在厉害

C语言入门新手,大家一起讨论学习!
2009-07-27 23:22
xiaogu149162
Rank: 2
等 级:论坛游民
帖 子:47
专家分:97
注 册:2009-7-16
得分:0 
2009-07-27 23:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-280736-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.543281 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved