Project Euler 206
Project Euler 206
题目
Concealed Square
Find the unique positive integer whose square has the form 1_2_3_4_5_6_7_8_9_0, where each “_” is a single digit.
解决方案
假设当前枚举的数位
- 如果
最后一位是 ,那么倒数第二位肯定也是 ,故不考虑 的最低位 ,直接舍去,在输出答案的时候恢复。 - 需要枚举的
在 在 之间。因为 最高位为 ,因此 。 - 因此,
是一个 位数,最高位为 。使用 meet-in-the-middle 的思想进行枚举。一部分是枚举 的中间 位,最多 种情况,注意到这中间 位明显不能够对 的低 位产生影响;另一部分是枚举 的低 位,由于中间 位的平方数值不会不能影响 低 位的值,因此枚举的过程中,只保留平方数个位为 ,百位为 ,万位为 的情况。这低 位中的 种只有 种情况是符合的。
排除了低
代码
1 | ls = [] |