构造
题目描述:给定整数\(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)\)
作者:cherish.
出处:https://home.cnblogs.com/u/cherish-/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。