如何创建一个从3个数字到3个完全不同的数字(基数10)的一对一映射?
秩序很重要。给定的字符串有不同的数字。
例如,给定012,接收345。生成的字符串不能包含原始字符串中的数字。对于所有的10 * 9 * 8 = 720可能性,映射应该是一对一的.
我仅有的几个数学思想,如加或减数字,似乎都允许数字被重复。
发布于 2014-10-31 20:58:43
找到最小k,以便将k加到每个数字mod 10中,就会产生一组不相交的数字。就这么做吧。逆运算是从每个数字mod 10中减去相同的k。
证明图:所有算术运算都是mod 10。第一种观察是总是存在一个合适的k,k有10种选择,但只有9种可能的冲突,其中冲突包括输入中的一个位置和保持相同数字的输出中的一个位置。第二个观察是,给定输入(a,b,c),k的值在输入之间是不变的(a + d,b+ d,c+ d),其中d是一个数字。因此,逆运算确实是逆运算(因为k的值被确定为相同),因此这两个运算都是双射的。
https://stackoverflow.com/questions/26683018
复制相似问题