通过行号识别系列中的字符

时间:2015-10-10 14:46:10

标签: algorithm combinations reverse-engineering series

这是我第一次来这里。我搜索过,找不到任何相关内容。试着解决问题:

其中a = 1,b = 2,c = 3 ... z = 26

如果您要创建一个系列,其中它经历了每个可能的字母结果并按数字顺序使用1个字符长度,则可能的总结果数为26(26 ^ 1)。你很容易认为“e”将出现在该系列的第5行。 “y”将是第25行。

如果将参数设置为2个字符长度,则组合总数为676(26 ^ 2),“aa”为第1行,“az”为第26行,“ba”为第27行,“zz”将是第676行。这很容易计算,无论字符长度是多少都可以完成,你总能找到系列中的那一行。

我的问题是你是如何逆向做到的?使用相同的参数,1显然是“aa”,31将是“be”。你如何使用676将成为“zz”的公式? 676,基于参数设置,只能是“zz”,它不能是任何其他字符集。因此,只要您知道该系列的参数,就应该有一种计算方法,无论数字有多长。

如果字符长度为10,那么例如546,879,866上的字符是什么?

这甚至可行吗?非常感谢提前

1 个答案:

答案 0 :(得分:0)

足以将546,879,866翻译成26个基数。例如在bash中:

echo 'obase=26 ; 546879866' | bc
 01 20 00 19 03 23 00

如果你喜欢10个字符,你应该从头开始填写数字:

 00 00 00 01 20 00 19 03 23 00

请注意,数字从0开始,这意味着a = 00,b = 01,... z = 25.