#10202. 「一本通 6.2 练习 5」樱花

Lisa

这个\(n!\)不如先简简单单看成n,然后可知,\(x>n\)\(y>n\)不如令\(x=n+a,y=n+b\)代入原式子,可知

\(a*b=n^2\)

那么a,b就是它的一对因子了

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define int long long
using namespace std;
int vis[1000001];
int prime[1000001];
int cnt;
int n;
void ol(){
	for(int i=2;i<=n;++i){
		if(!vis[i]){
			prime[++cnt]=i;
		}
		for(int j=1;j<=cnt&&i*prime[j]<=n;++j){
			vis[i*prime[j]]=1;
			if(i%prime[j]) break;
		}
	}
}
int cntt[10000001];
void divide(int x){
	for(int i=1;prime[i]*prime[i]<=x;++i){
		while(x%prime[i]==0){
			cntt[prime[i]]++;
			x/=prime[i];
		}
	}
	if(x!=1){
	cntt[x]++;
	}
	return ;
}
int ans=1;
int mod=1000000007;
signed main(){
	scanf("%d",&n);
	ol();
	for(int i=1;i<=n;++i){
		divide(i);
	}
	for(int i=1;i<=cnt;++i){
		ans=ans*((cntt[prime[i]]*2+1));
		ans%=mod;
	}
	cout<<(ans);
	return 0;
}
posted @ 2021-07-27 13:38  Simex  阅读(60)  评论(0)    收藏  举报