1 条题解

  • 0
    @ 2023-4-24 11:33:41

    难推,建议自己推一下

    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    
    const int MOD = 1e9+7,N = 1e6+10;
    
    int n,tot;
    int prime[N],res[N];
    bool vis[N];
    
    void oula(int n)//欧拉筛 
    {
    	for(int i=2;i<=n;i++)
    	{
    		if(!vis[i]) prime[++tot] = i;
    		for(int j=1;j<=tot && prime[j]*i<=n;j++)
    		{
    			vis[i*prime[j]] = true;
    			if(i%prime[j]==0) break;
    		}
    	}
    }
    
    signed main()
    {
    	cin >> n;
    	oula(n);
    	int ans = 1;
    	for(int i=1;i<=tot;i++)
    	{
    		int j = prime[i];
    		while(j<=n)
    		{
    			res[i]+=(n/j);
    			j*=prime[i];
    		}
    		res[i]%=MOD;
    		ans*=(res[i]<<1|1)%MOD;
    		ans%=MOD;
    	}
    	cout << ans;
    	return 0;
    }
    
    • 1

    信息

    ID
    681
    时间
    1000ms
    内存
    512MiB
    难度
    9
    标签
    递交数
    9
    已通过
    5
    上传者