1
1
如果您只需要计算奇数、偶数和混合结果,您应该能够通过计算[0,10^9)的1111111192条记录(约占总数的1/10)来找到结果 解决方案想法 对于0到9,只需全部计算即可。 对于其余值,请如下所示。您不需要构建表,而是使用这个概念。
计数器分布:左上角为1,向下移动时计数器增加1,直到达到9。右下角为1,向左移动时计数器增加1。 证明 假设您有一个值'abcdefg'和('a'不等于1,'bcdefg'不等于0)。 在这种情况下,上表中“abcdefg”的右上角位置应该存在。
“abcdefg”右上角的值为“abcddefg”+10^(r-1)-1。我们可以将其写为“a”bcdefg“”,其中a“=a+1,g”=g-1
这证明计算值将与其右上角元素的计算值相同 |
2
1
以下是一些小的优化想法: 1.
此循环每次都在重新计算10^9。只需执行一次,并将其存储在常量变量中 2.
|
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
Manny · 如何比较Perl中的字符串? 2 年前 |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |