一番玄学打表后,发现对于
表示证明不来,反正对了。
#include<cstdio>
typedef long long ll;
const int mod=1e9+7;
const int N=1e6+10;
ll prime[N/10],p;
bool iscomp[N];
void primetable()
{
for(ll i=2;i<N;i++)
{
if(!iscomp[i])prime[p++]=i;
for(int j=0;j<p&&i*prime[j]<N;j++)
{
iscomp[i*prime[j]]=1;
if(i%prime[j]==0)break;
}
}
}
int main()
{
primetable();ll n,ans=1;
scanf("%lld",&n);
for(ll i=0;i<p&&prime[i]<=n;i++)
{
ll x=prime[i],cnt=0;
while(x<=n)cnt+=n/x,x*=prime[i];
ans=1ll*ans*(cnt*2+1)%mod;
}
printf("%lld\n",ans);
return 0;
}
总结
这叫打表找规律吗