[ABC169D] Div Game

[ABC169D] Div Game

思路

\(n\) 分解质因数后可以得到 \(n=p_1^{c_1}\times p_2^{c_2}\times \cdots\times p_m^{c_m}\)。因为每个 \(z\) 要互不相同,所以考虑贪心地去除以 \(p_i^1,p_i^2,\cdots,p_i^{x_i}\),则可以得到:

\[1+2+\cdots+x_i\le c_i \\ \frac{x_i\times (x_i+1)}{2}\le c_i \\ 1\le x_i\le \sqrt{2\times c_i+\frac{1}{4}}-\frac{1}{2} \]

答案即为 \(\sum_{i=1}^m\max{x_i}\)

代码

#include <bits/stdc++.h>
using namespace std;
long long n,mx,ans;
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr),cout.tie(nullptr);
	cin>>n,mx=sqrt(n);
	for(int i=2;i<=mx;i++)
		if(n%i==0){
			int cnt=0;
			while(n%i==0)
				n/=i,cnt++;
			ans+=floor(sqrt(2*cnt+0.25)-0.5);
		}
	if(n!=1)
		ans++;
	cout<<ans;
	return 0;
}
posted @ 2025-03-26 10:59  WuMin4  阅读(11)  评论(0)    收藏  举报