一个01序列的计算题
在一张白纸上先依次写上0和1两个数字。然后从左到右扫描白纸上所有数字,每遇上一个数字0,在序列后面添加三个数001,每遇上一个数字1,在序列后面添加两个数01。
请问,序列第$100000!$个数是什么?(注意是第100000!而不是第100000个数) :)
你厉害
0100110010011100100110010011110010011001001,,, :)
结论
0总是连续出现两个
1似乎是按12131415规律出现 原帖由 无心人 于 2008-4-24 15:57 发表 http://images.5d6d.net/dz60/common/back.gif
:)
你厉害
0100110010011100100110010011110010011001001,,,
应该是
01001010010010100101吧??? kofeffect的正确,无心人应该看错题目了 :)
看串行了
是
0100101001001010010100100101001001010010100100101001
按1之间的0数量记
12122121221221212212 :)
要看是规则序列还是递增规则序列
我愚钝,谁能做出100个的序列
看是1212212122122 1212212122122
还是12122 12122122 12122122122 12122122122122 0
Fibonacci word :)
什么意思? 使用一个笨方法得出第100000!位的数字是0
分析规律:
设定: 基为:01,生成元为:0->001 ,1->01
根: 0 1
第一层:00101
第二层:0010010100101
第三层:0010010100100101001010010010100101
第四层:......
第N+1层以第N层为基,
用a代表001,用b代表01
推出第N+1层:A=2A+B
B=A+B
A表示第N层a的个数,B表示第N层b的个数
a = 0;
b = 1;
s = 0;
for(i=1;i<N;i++)
{
temp = a;
a = 2a+b;
b =temp+b;
s = s+3a+2b;//计算位数
}
我设置N足够大,在for循环内设置当s的值超过100000!时停止
得:
i 值:879924
s 值:456575
而100000!的位数是456574位
加上注意到每一层的最右边都是01,所以第100000!位数就是0
当然这只是一种投机的原始的方法,假设所求位数不在最右或最左的边位上,就得另寻他法了^_^
页:
[1]
2