Luogu8054 solution
Problem
对于每一个正整数 \(x\),有 \(x=p_1^{c_1} \cdot p_2^{c_2} \cdot ... \cdot p_n^{c_n}\)。
\(f(x)=\sum_{i=1}^n c_i\)。
问对于 \(x\) 是否有一个 \(y\),使 \(f(y)>f(x)\) 并 \(y < x\)。
link->https://www.luogu.com.cn/problem/P8054
Solution
首先 \(f(x)=a\),已知 \(a\),最小的 \(x\) 很明显是 \(2^a\),而不是 \(2^{a-1} \cdot 3^1\) 或是 \(3^a\) 之类的。
配合上结论,如果要求 \(f(y)>f(x)\) 也就是说最小满足此要求的 \(y\) 为 \(2^{f(x)+1}\)。
最暴力的想法:使用 \(O(\sqrt{n})\) 的时间计算出 \(f(x)\),然后用 \(O(1)\) 的时间判断 \(2^{f(x)+1}<x\) 是否成立。
总时间复杂度 \(O(T \cdot \sqrt{n})\),数据极限情况约 \(O(10^{10})\)。
引理:
一个 \(>3\) 的奇数,满足题目条件。
证明:
-
对于 \(5\),\(f(5)=1\),有一个 \(f(4)=2>f(5)\)。
-
对于 \(7\),\(f(7)=1\),有一个 \(f(4)=2>f(7)\)。
-
对于 \(9\),\(f(9)=2\),有一个 \(f(8)=3>f(9)\)。
……
根据数学归纳法,如果一奇数 \(x\) 满足条件(假设满足条件的最小答案为 \(y\)),那么对于一奇数 \(k\),\(f(x \cdot k)=f(x)+f(k)\),则 \(f(y \cdot k)=f(y)+f(k) > f(x \cdot k)=f(x)+f(k)\),\(x \cdot k\) 满足条件。
接下来考虑 \(x\),为偶数的情况:首先一个偶数可以写成 \(a=2^b \cdot x\) \((b>0,x\%2=1)\),当奇数 \(x\) 满足情况时(假设满足条件的最小答案为 \(y\)),\(f(y \cdot 2^b)=f(y)+b>f(a)=f(x)+b\)。
满足条件。