如何创建从3位到3位完全不同的数字(基数10)的一对一映射?
订单很重要.给定的字符串有不同的数字.
例如,给定012,接收345.结果字符串不能包含原始数字.对于所有10 * 9 * 8 = 720种可能性,映射应该是一对一的.
我所拥有的一些数学思想,例如加上或减去数字,似乎都允许重复数字.
最佳答案 找到最小k,使得向每个数字mod 10添加k导致不相交的数字集.去做.逆操作是从每个数字模10中减去相同的k.
正确性的证明草图:所有算术运算都是mod 10.第一个观察结果是总是存在合适的k. k有10种选择,但只有9种可能的冲突,其中冲突包括输入中的位置和输出中保持相同数字的位置.每个冲突都由k的一个选择触发.第二个观察结果是,给定输入(a,b,c),k的值在输入(a d,b d,c d)之间是不变的,其中d是数字.由此得出,逆操作确实是逆的(因为k的值被确定为相同),因此两个操作都是双射的.