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\)

满足条件。

posted @ 2022-08-02 09:02  lsj2009  阅读(38)  评论(0)    收藏  举报