| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1410 人关注过本帖, 1 人收藏
标题:猜一猜,做一做。
只看楼主 加入收藏
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
衔接不算个问题。刚修改了上面的一处笔误,时间复杂度是O(n),n表示第几个这样的数。

重剑无锋,大巧不工
2012-02-29 08:49
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
这个原子数的首部只能是1, 2, 3,4. 分别对应的尾部是(2, 3),(4, 5)(6, 7)(8, 9)。如果确定了首尾对,就可以确定这个原子数,然后可以继续扩充这个数。我现在想有没有一种填充法来形成这个原子数。

梅尚程荀
马谭杨奚







                                                       
2012-02-29 08:52
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
收藏
得分:0 
遗漏了一种情况,结尾不一定要偶数,但是要提前设定。还是以4开头,设以偶数结尾,那就是楼主给的数,如果设为奇数,则算第二个数时要考虑上上个数为奇数,则为14/2=7。最后结果为473684210526315789

酱油实习生
2012-02-29 09:10
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
收藏
得分:30 
其实都是一个字符串
程序代码:
int ori,now,sign,temp;
    for(ori=1;ori<=4;++ori)
    {
        now=ori;
        sign=0;
        do
        {
            printf("%d",now);
            temp=(sign*10+now)/2;
            sign=now%2;
            now=temp;
        }
        while(now!=ori||sign==1);
        printf("\n");
        now=ori;
        sign=1;
        do
        {
            printf("%d",now);
            temp=(sign*10+now)/2;
            sign=now%2;
            now=temp;
        }
        while(now!=ori||sign==0);
        printf("\n");
    }

 

酱油实习生
2012-02-29 12:02
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 24楼 墨清扬
很不错,可以改进下输出10000以内的数。

梅尚程荀
马谭杨奚







                                                       
2012-02-29 12:24
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
回复 11楼 beyondyf
这个真心犀利了。

我昨天推导到这里,感觉程序写起来有些麻烦,没想到这么简单的程序。。

不过这一段:
for(b = 2; b <= 9; printf("%d\n", b++))
    for(a = b * 10, j = 0; j < i; j++, a = a % 19 * 10)
     printf("%d", a / 19);
上面循环是代表最后一位,下面则是输出(10^i-2)*b/19,下面这个循环式什么原理啊
2012-02-29 12:39
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 26楼 czz5242199
我代码中的a, b, c与我前一贴分析中的A B C的意义是一致的。

(10^i - 2)*b/19 展开后是 10^i * b / 19 - 2 * b / 19

2 * b / 19 实际即是 10^i * b / 19 的余数,所以直接省略。从大数的开头两位(即10b)直接向后计算即是a的每一位。循环计算完后补上最后一位b即是X了。

重剑无锋,大巧不工
2012-02-29 12:52
yxiangyxiang
Rank: 3Rank: 3
来 自:/\/\/\/\/
等 级:论坛游侠
帖 子:130
专家分:186
注 册:2012-1-29
收藏
得分:0 
421052631578947368
下一个数是什么?
2012-02-29 13:06
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
懂了。

这个程序真心巧妙
2012-02-29 13:07
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用yxiangyxiang在2012-2-29 13:06:40的发言:

421052631578947368
下一个数是什么?
杨大哥还有清扬都贴代码了,侬扯控哈咯。

梅尚程荀
马谭杨奚







                                                       
2012-02-29 13:14
快速回复:猜一猜,做一做。
数据加载中...
 
   



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

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