Luogu1445 [Violet]樱花

推导:dalao的blog

CODE:

#include<iostream>
#include<cstdio>
#define ll long long
#define MOD 1000000007
using namespace std;
ll ans=1, cnt[100001];
int n, prime[100001], sf[100001], tot;
void getprime(){
	sf[0]=1;
	sf[1]=1;
	for(int i=2; i<=n; i++){
		if(!sf[i])prime[++tot]=i;
		for(int j=1; j<=tot; j++){
			if(i*prime[j]>n)break;
			sf[i*prime[j]]=1;
			if(i%prime[j]==0)break;
		}
	}
}
int main(){
	cin>>n;
	getprime();
	for(int i=1; i<=tot; i++){
		cnt[i]=0;
		for(ll j=prime[i]; j<=n; j*=prime[i]) cnt[i]+=n/j;
		cnt[i]%=MOD;
	}
	for(int i=1; i<=tot; i++)
		ans=ans*(cnt[i]*2+1)%MOD;
	printf("%lld", ans);
	return 0;
}
posted @ 2018-10-29 17:00  PushinL  阅读(96)  评论(0编辑  收藏  举报