保险柜密码推算公式
- 心理
- 关注:1.32W次
迭代分析第n次的密码计算公式:
X0 = 0000 0001
X1 = (3 * X0) % 108 + (3 * X0) / 108,显然,X1< 108
X2 = (3 * X1) % 108 + (3 * X1) / 108
= {3 * [(3 * X0) % 108 + (3 * X0) / 108]} % 108 + {3 * [(3 * X0) % 108 + (3 * X0) / 108]} / 108
   = {3 * [(3 * X0) % 108]} % 108 + {3 * [(3 * X0) / 108]}(显然其值<9) % 108 
      + {3 * [(3 * X0) % 108 ]} / 108 + {3 * [(3 * X0) / 108]} / 108(显然其值趋于0)
   = (32 * X0) % 10(由分配率得) + (32 * X0) / 108 + [(32 * X0) % 108 ] / 108(趋于0忽略) + 0
   = (32 * X0) % 10 + (32 * X0) / 108
X3 = (33 * X0) % 10 + (33 * X0) / 108
以此类推可得:
Xn = (3n * X0) % 10 + (3n * X0) / 108
又因:X0 = 1,所以:Xn = 3n % 10 + 3n / 108
关于计算3n:
1、简单处理的话可以n个3联乘,时间复杂度O(n),当n较大时比较耗时,此题暂时不考虑大数问题
2、当n为偶数时,3n=[3(n/2)]2,当n为奇数
- 文章版权属于文章作者所有,转载请注明 https://rmnxw.com/lvse/xinli/nqlj7m.html