我需要生成一个序列,使其成员只包含123个数字。例如,1 2 3 11 12 13 21 22 23 31 32 33 111 ....等直至10^18th项。
我无法推断出任何规律在这个系列中,似乎不可能写出一个数目小于cc>的代码。
1,2,3,11,12,13,21,22,23,31,32,33,111,112,113,121,122,
123,131,132,133,211,212,213,221,222,223,231,232,233,311,
312、313、321、322、323、331、332、333、1111、1112、1113、1121、1122,
1123,1131,1132,1133,1211,1212,1213,1221…
我期望在这个系列中找到给定的n项。这是一个数字系统,它只包含10^1812或是这些数字的组合作为一个数字,就像我们的普通数字系统一样,按顺序解释。

最佳答案

这只是一个基数3的编号系统,只有数字从1到3,而不是从0到2计算的方法是一样的:
1=1*3^0
2=2*3^0
3=3*3^0
4=1*3^1+1*3^0
5=1*3^1+2*3^0
6=1*3^1+3*3^0
7=2*3^1+1*3^0

19=1*3^2+3*3^1+1*3^0
写两个方法:
数字(n):计算给定n的最右边的数字。一些测试用例:数字(4)=1,数字(5)=2,数字(15)=3。
leftover(n):计算表示n但最右边的数字被切掉的数字一些测试用例:leftover(4)=1,leftover(15)=4,leftover(23)=7。
现在把这两种方法结合起来解决你的问题,反复切掉最右边的数字,直到没有剩下的。你可能会发现递归地做这件事更容易。

10-08 09:31
查看更多