比赛 20190522数学 评测结果 AAAAAAAAAA
题目名称 首遇lancer 最终得分 100
用户昵称 梦那边的美好ET 运行时间 0.029 s
代码语言 C++ 内存使用 14.42 MiB
提交时间 2019-05-23 08:41:17
显示代码纯文本
#include<bits/stdc++.h>
#define LL long long
#define maxn 100010
using namespace std;
const LL mod=(LL)1000000007;
int p[maxn],bk[maxn],lp,n;
LL ans=1;
bool isp(int x){
	for(int i=2;i<=sqrt(x);i++)
	    if(x%i==0)return 0;
	return 1;
}
int main(){
	freopen("lancer.in","r",stdin);
	freopen("lancer.out","w",stdout);
	scanf("%d",&n);
	if(isp(n)){printf("3\n");return 0;}
	for(int i=2;i<=maxn-10;i++){
		if(bk[i]==0)p[++lp]=i;
		for(int j=1;j<=lp&&p[j]*i<=maxn-10;j++){
			bk[p[j]*i]=1;
			if(i%p[j]==0)break;
		}
	}int h=sqrt(n);
	for(int i=1;p[i]<=h;i++){
		if(n%p[i]!=0)continue;
		int sum=1;
		while(n%p[i]==0)n/=p[i],sum++;
		ans=((LL)(sum+1)*(LL)sum/(LL)2%mod*ans)%mod;
	}
	if(n!=1)ans=(ans*(LL)3)%mod;
	printf("%lld\n",ans%mod);
	return 0;
}