一个加密是一个数学拼图,其中各种符号用于表示数字,并且给定的系统必须是真的。最常见的形式是数学等式(如下所示),但有时可以有多个方程或语句。用手解决密码,通常涉及逻辑扣除和剩余可能性的详尽测试。此外,请记住,密码可以没有解决方案,一个独特的解决方案,甚至众多解决方案。
我们将探索各种处理密码的技术,为您提供一个完整的武器库来解决密码,如:
为了简单和一致性,我们将假设如下:
我们将应用密码简单方程的一些性质。如果你不熟悉这个概念,请先看主要文章:简单的方程式.
为了解决用于上述密码 和 我们可以把它解释为两个整数的和。也就是说,
这给了 .我们可以单独检查一下 和 给出了解决方案。
找到表示符号的值 .
转换的密码到一个公式给出了 .
然后,我们将这每个3位整数中的每一个转换为代数表达式:
因此,我们有
2)列的重排
上面展示了两种加密方法。对于左边的,如果我们重新排列数字/字母在它们各自的列中,我们将得到右边的密码。请注意,只有当它是一个简单的加法时,我们才能这样做。这是可行的,因为我们已经把密码转换成一个方程,然后又转换回一个修改过的密码。因此,解左边的未知量等价于解右边的未知量。在这种情况下,一个简单的代数可以解决它:
对于上面的密码,找到的值 和 这样
重新排列各自列中的数字,可以得到以下密码:
对这个密码的解释表明,任何列中的数字的和都是6。自 它们都是单位数字积极整数 ,我们有 只有。
奖金:试着用777代替666来解决上面的例子。
3)继续
一个携带是从数字一列转移至更显著数字另一列数字。
对于上面的密码,我们可以立即显示, 不知道其他未知字母的值!以下是:
我们可以证明两个4位整数的和不超过 .此外,因为我们知道, 是零, 被迫
这种技术的好处是限制未知变量的可能值,从而使这一难题更容易解决。更一般地,我们有以下定理:
如果我们有 正整数,即它们都具有相同的位数,这些数字的总和是结转的最大值
在上面的密码中有一些未知数 和 找出…的价值
利用我们在上面学到的概念,我们可以看到 只有。
注意:显然我们可以先解出其他未知量。例如,从第一列 来自第三列 ,这意味着 因为我们只取最后一位 为 进位是 .然后 与携带 .因此 .但这种方法要长得多。
当四个不同的四位数整数的和等于一个五位数时 找到领先数字的可能值
使用携带概念,我们认为最大可能的价值 是
所有可能的前位数 是 和
从以上的解释,我们知道 .利用多年的概念,表明
因为有一个carry在 列, 列 必须小于或等于 .但是,所有这些不同的字母是不同的值,所以通过阅读 ,我们有 ,在那里 是结转的吗 与 或者 .请记住,唯一可能的价值 和 是 .
如果 ,我们有 ,或者只是 ,它的力量 只取9和的值 的价值 .
如果 ,我们有 ,或者只是 ,它的力量 只占据8的价值 的价值 .无论哪种方式, 是唯一的可能的解决方案。
这是 具有相同数字数的正整数,所以进位只能是0或1。所以 或者 只有。如果 ,那么第三列将进位,这意味着 是小于还是等于 这是不可能的。因此,第三列没有携带。因此 只有。
最后,我们指的是第三列。自 ,则有一个非零的结转值,这意味着 因此,
像模运算,我们将申请的整除规则的某些属性的密码。如果你不熟悉这个概念,请先参阅主要文章,可分性规则.
通过整除法则 从最后一个数字开始 数字号码是 另外两个数字的最后两位中至少有一位必须以 因此 .现在,因为 -数字能被整除 它的数字和必须能被整除 也所以 是可分开的 与 单个位的整数,这意味着 只有。
上面显示了一个不完整的密码。的可能值 利用整除的属性单独规定。
因为 是可分开的 和 是可分开的 是可分开的 这意味着 是可分开的 意味着数字的和必须能被整除 :
上面显示了一个不完整的密码。求 和 利用整除的属性单独规定。
因为 以A结尾 的 -数字能被整除 所以这个号码的最后一位数字或者是 或者 只有。因为它是一个偶数的乘法,所以最后一位必须是 所以 只有。
自 , -数字能被整除 因此,数字的和可以被整除 也也就是说, 只有。
在本节中,我们将利用整数的因数分解来解决密码问题。
对于上面的例子,我们有一个 位数字号码,一个 -数字,使它们的乘积等于 通过因式分解,我们有 (数211可以很容易地证明是素数)。转换的形式上面,我们要么必须 或者 .所以存在两个解决方案,即 .
我们将在密码中应用模运算的一些性质。如果你不熟悉这个概念,请先参阅主要文章,模运算.
上面显示了两个数之间的不完全乘法,其中我们不一定有不同的单位数整数 和 .因为 是可分开的 和 是可分开的 ,它们的乘积被整除 .所以 必须被整除 .因此通过模块化算术, .
在前面的例子中,我们得到 和 .使用这些附加信息,显示 .
假设里面没有进位 柱,然后 与 然后我们可以化简成 ,这意味着 .但这是自相矛盾的 已经写好了,所有的字母都必须是清楚的。所以没有进位 列,这意味着 只有。
现在,你可以玩完上述第一个密码?
对于一些涉及cryptarithm乘法,中国剩余定理(CRT)会派上用场。它采用模块化运算的一些性质。如果你不熟悉这个概念,请先参阅主要文章,中国剩余定理.
随着应用相同的规则,就可以解决这个cryptarithm?
请注意,所有这三个数字的最后两位数字都是相同的。用线性批量写下来 ,或 .因为 和 是连续的,它们一定是互质数。与 ,我们有
通过CRT解决 只是,这意味着 .你能完成了自己解决?
有时,可能没有简单的方法来处理密码,我们能做的最多的是应用蛮力方法,并检查每个情况,以确定他们是否产生一个解决方案。
以上面的例子为例 可以是任何整数 和 包括: .通过试验和淘汰, 只有。这是解决这个问题的最简单的方法,因为只需要考虑一个未知,而这个未知的设置方式使得其他解决方法需要更长的时间。
有时候,它会更繁琐的检查所有可能的情况下,像在试错法。因此,这不是解决这一理想的方式,因此,我们需要应用其他技术。一个可行的方法是使用编程代码来解决这个问题。
找到上面的密码中表示的未知字母的值。
解决方案:
1 2 3 4 5 6 7从itertools.进口排列为我在排列(“0123456789”):str=''.加入(我)[E,U,R,O,P,一个,J,我,T,N]=列表(str)如果㈡(E+U+R+O+P+一个)+㈡(J+U+P+我+T+E+R)==.㈡(N+E+P+T+U+N+E):打印(㈡(E+U+R+O+P+一个)))
输出是
有一个叫方法分支和绑定它运用了运筹学的一种技术。至于主要文章,请参阅分支和绑定.
上面这个wiki页面显示密文仅需要一个技术的例子。然而,这将是棘手的解决使用的技术的混合,这是在后续页面研制出了密码:密码-解决问题.
上面提到的技术在本页中提到的技术足以应对所有密码问题。然而,知道在解决密码时使用时使用的技术肯定有益。以下是如何在解决密码时识别哪些技术有用的一些良好指标:
技术 | 类型的问题 | 条件适用 |
1)将密码转换为方程 | 所有 | 几个符号,其中每个发生1-2次 |
2)列的重排 | 每列最多1-2个符号 | |
3)继续 | (最有用的技术)来识别附加约束 | |
4)可分配规则 | 一项有一个因子,有一个简单的可整除规则 | |
5)保理条款 | 如果我们知道整个项,可以很容易地分解它 | |
6)模运算 | 如果我们有大量的信息模的值(如2,3,4,5,8) | |
7)中国剩余定理 | 2个或2个以上数字的最后几位数相同 | |
8)反复试验 | 所有 | 变量很少,但它们发生了很多次 |
9)编程方法 | 所有 | 任何密码都可以 |