MarchBeta2087想了好几个小时,想出了这么一个方案 中发帖

是关于 Collatz 猜想的,大概是这样: 
给出一串非零的二进制 X(长度:1 ≤ N ≤ 10^7,这串二进制被存放于内存),进行以下处理: 

先删除末尾所有的 0,得到 Y
然后删除 Y 末尾所有的 01(例如:100101b → 10b,1101000101b → 110100b,101101010101b → 1011b),得到 Z
将 Z 乘以 3(例如:1011b → 100001b,110010b → 10010110b),得到 W
如果 W 是 11b,则终止,否则,将 W 位最低的 0 改成 1,比它更低的位全部删除(因为比它更低的位都是 1),得到一个新的 Y,放到步骤 2 继续执行


示例 1: 
100101b(37) --S2–> 10b --S3–> 110b --S4–> 111b(7) --S2–> 111b --S3–> 10101b --S4–> ...
 
 
Back to Top