我遇到了这个 question今天早上。
基本上,这个问题是关于必须为 6 个值创建排列的数据;每一个从 1 到 38。
所以,第一个排列是
1 1 1 1 1 1 [ permutation 1 ]
1 1 1 1 1 2 [ permutation 2 ]
1 1 1 1 1 3... [ permutation 3 ]
稍后结束
38 38 38 38 38 38 [ permutation 38^^6 ]
输出是由 6 个嵌套循环简单创建的,每个循环从 1 到 38;在最内层的循环中,打印 6 个循环计数器。
现在我想知道这背后的数学原理;出于好奇:
的“功能”是什么?- 计算“排列指数”,给定任何排列 1 2 3 4 5 6
- 可能更有趣:需要一个“索引”,例如 102382;并告诉我相应的排列输出
有人知道吗?
最佳答案
它的工作原理与改 rebase 数(二进制、八进制或十六进制)完全一样。 第一个问题很简单: 1*38^6 + 2*38^5 + 3*38^4 + 4*38^3 +...+6*38^0 第二个反转: 102382 mod 38...递归 更新 让我们假设我们想要将 10 更改为基数 2:
10/2=5 remainder(modulus) **0**
5/2=2 remainder **1**
2/2=1 remainder **0**
1/2=0 remainder **1**
向后是1010 general 给了一个 M 来改 rebase 数 B,只需将 M 除以 B ,余数将成为新基数中的数字
关于algorithm - 从 "int"映射到相应的排列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39387063/