解题思路:
这个题讲一个通俗的思路,首先由于数据巨大,最大的一个问题就是超时,所以必然不能使用传统的思路,
这里可以理解为,我们从最小的质数来分数据,(定理一定可以拆分成多个质数的乘积)在这个质数上将数据切分到极限,就是不能再切分为止,这其实就是在排除这个质数倍数的所有数据。并且数据也减小了
注意事项:
收尾工作,就是最后可能由单个质数组成
参考代码:
#include<iostream> #include<cmath> using namespace std; typedef long long ll; ll check(ll x) { ll temp=x,cnt=0; for(int i=2;i<=sqrt(temp)&&temp>1;i++) { if(temp%i==0) cnt++; while(temp%i==0) { temp/=i; } } if(temp>1) cnt++; return cnt; } int main() { ll n; cin>>n; cout<<check(n)<<endl; return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复