返回顶部

构造

题目描述:给定整数\(n\),构造一个\(n\)位的整数\(s\),并满足:

\[s \% 5^n = 0\\ \]

\(x\)的每一位数字都只能是奇数。

数据范围:\(1 \leq n \leq 10^6\)

思路:可以先打表,然后发现对于小数据范围内,答案是唯一的,且长度为\(n(n > 1)\)的答案的后\(n - 1\)位与长度为\(n - 1\)的答案相同,考虑证明之。

证明如下:

定义\(f_i\)表示长度为\(i\)的答案,根据上述猜想,假设该答案的第\(i\)位为\(x\),则

\[\begin{align} f_i &= x \times 10^{i - 1} + f_{i - 1}\\ \end{align} \]

对于\(f_{i - 1}\)有以下两种情况

  • \(\frac{f_i}{5^i} = \frac{x}{5} \times 2 ^{i - 1} + \frac{1}{5}\)
  • \(\frac{f_i}{5^i} = \frac{x}{5} \times 2 ^{i - 1} + 1\)

对于第一种情况,要满足题设,则\(x \times 2 ^ {i - 1} \% 5 = 4\),考虑到\(L = 2^{i - 1} \% 5\)\(1 , 2 , 3 , 4\)这四种取值,而\(x\)\(1 , 3 , 5 , 7 , 9\)\(5\)种取值,有如下情况:

\[\begin{align} L &= 1, x = 9\\ L &= 2 , x = 7\\ L &= 3 , x = 3\\ L &= 4 , x = 1 \end{align} \]

对于第二种情况,此时\(x\)\(5\)即可。

故只要根据\(L\)的取值和尾数的值填写相应的数字即可。

根据上述讨论可知\(x\)的取值唯一。

边界条件为\(f_1 = 5\)。故可以\(O(n)\)的递推出该\(n\)位满足题设的整数。

时间复杂度:\(O(n)\)

posted @ 2022-01-07 23:05  cherish-lgb  阅读(29)  评论(0编辑  收藏  举报