天才一秒记住本站地址:[乐书网]
https://www.leshuxs.org/最快更新!无广告!
使用带有位数的方式来实现,比如第一位二进制0,换算为十进制的1;比如第一位二进制3,换算为十进制的4;第二位二进制0,换算为十进制的5;第二位的二进制6,换算为十进制的4;
第N位;是二进制0时=2N+1;是二进制1时=2N+2;
134
256
378
1001000100001换算下来,就是:
1=4
0=5
0=7
1=10
0=11
0=13
0=15
1=18
0=19
0=21
0=23
0=25
1=26
4A5B7C(10)A(11)B(13)C(15)A(18)B(19)C(21)A(23)B(25)C(26)
当A=+加法,B=减法,C=*乘法时:
4+57*(10)+(11)(13)*(15)+(18)(19)*(21)+(23)(25)*(26)=1253(优先计算乘法)
(4+57)*(10+1113)*(15+1819)*(21+2325)*(26)=110656(最后计算乘法,先算加减法)
当A=+加法,B=*乘法,C=减法时
4+5*7(10)+(11)*(13)(15)+(18)*(19)(21)+(23)*(25)(26)=1027(优先计算乘法)
(4+5)*(710+11)*(1315+18)*(1921+23)*(2526)=24192(最后计算乘法,先算加减法)
当A=*乘法,B=+加法,C=减法时
4*5+7(10)*(11)+(13)(15)*(18)+(19)(21)*(23)+(25)(26)=805(优先计算乘法)
4*(5+710)*(11+1315)*(18+1921)*(23+2526)=25344(最后计算乘法,先算加减法)
当A=*乘法,B=减法,C=+加法时
4*57+(10)*(11)(13)+(15)*(18)(19)+(21)*(23)(25)+(26)=845(优先计算乘法)
4*(57+10)*(1113+15)*(1819+21)*(2325+26)=199680(最后计算乘法,先算加减法)
当A=减法,B=+加法,C=*乘法时
45+7*(10)(11)+(13)*(15)(18)+(19)*(21)(23)+(25)*(26)=1261(优先计算乘法)
(45+7)*(1011+13)*(1518+19)*(2123+25)*(26)=688896(最后计算乘法,先算加减法)
当A=减法,B=*乘法,C=+加法时
45*7+(10)(11)*(13)+(15)(18)*(19)+(21)(23)*(25)+(26)=1019(优先计算乘法)
(45)*(7+1011)*(13+1518)*(19+2123)*(25+26)=52020(最后计算乘法,先算加减法)
当然了,数据压缩,可最少都是1GB长度的源数据,为了避免篇幅过长,以及作者换算到浪费时间,这里就只用少量数据来做对比,也就是说,如果是1ZB的数据,那么就有意思了,(2N+1)和(2N+2)看起来不大,如果是210=1024;220=1,048,576;250=1,125,899,906,842,624;以此类推,当N取值足够大时,那么想象一下1,125,899,906,842,624*1,125,899,906,842,625(优先计算乘法);再想象一下(1,125,899,906,842,624+1,125,899,906,842,6251,125,899,906,842,627)*(1,125,899,906,842,628+1,125,899,906,842,6291,125,899,906,842,630)=1.26765060022823E30
然后在以此类推,当N个1.???????E??????相乘的时候,结果也是足够大的,这个时候要怎么办呢?
限制N的最大值,把数据分段,从而避免N取值过大,导致没必要的运算消耗。
比如限制N小于50,那么就是每49位为一个分段;以此类推。
分段的结果,就是必须要按照分段来分别得出结果,避免分段占用(也就是A分段中,出现过33,而B分段中也出现过33,就导致了分段占用)(当然了,实际使用时,往往需要进行优化,作者这创作的内容,完全是第一代版本,自然语言版本)(众所周知,第一代版本,往往都是最不稳定的,特别是无中生有的算法什么的,尤其以没有发展出V1.539972.335377.885662版本就发布的作者为甚)。
章节错误,点此报送(免注册),
报送后维护人员会在两分钟内校正章节内容,请耐心等待。