测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A29868. 奇妙数字

填空题 困难

题目描述

奇妙数字

时间限制:1.0 s    内存限制:512.0 MB

题目描述

小杨认为一个数字x是奇妙数字当且仅当x=pa,其中p为任意质数且a为正整数。例如,8=2*2*2,所以8是奇妙数字,而6不是。

对于一个正整数 n,小杨想要构建一个包含m个奇妙数字的集合{x1,x2,,,,xm},使其满足以下条件:

集合中不包含相同的数字。

x1,x2,,,,xm 是 n 的因子(即x1,x2,,,,xm 这m个数字的乘积是n的因子)。

小杨希望集合包含的奇妙数字尽可能多,请你帮他计算出满足条件的集合最多包含多少个奇妙数字。

输入格式

第一行包含一个正整数n,含义如题目所示。

输出格式

输出一个正整数,代表满足条件的集合最多包含的奇妙数字个数。

输入样例

128

输出样例

3

参考答案

#include <bits/stdc++.h> using namespace std; #define ll long long const int N = 1e5+10; ll calc(ll x) { int ans = 0; ll tmp=1; while(x>=tmp) { ans++; x-=tmp; tmp++; } return ans; } int main() { ll n; cin>>n; ll ans = 0; for (ll i=2;i*i<=n;i++) { if(n%i==0) { int cnt = 0; while(n%i==0) { cnt++; n/=i; } ans+=calc(cnt); } } if(n!=1) { ans+=calc(1); } cout<<ans<<"\n"; }
上一题 下一题