zoukankan      html  css  js  c++  java
  • HDU 5608 function

    Description

    已知(N^2-3N+2=sum_{d|N} f(d)),求(sum_{i=1}^nf(i),nleqslant 10^9)

    Solution

    杜教筛+莫比乌斯反演...

    入门题...

    令(g(n)=n^2-3n+2)..

    那么(sum_{i=1}^ng(n)=sum_{i=1}^nsum_{dmid n} f(d)=sum_{i=1}^niS(lfloorfrac{n}{i} floor))

    所以(S(n)=sum_{i=1}^ng(n)-sum_{i=2}^niS(lfloorfrac{n}{i} floor))

    第一个式子可以用平方数和什么的求一下...

    然后预处理(10^6)...

    因为(g(n)=sum_{dmid n}f(d)),反演一下...

    (f(n)=sum_{dmid n}mu(d)g(frac{n}{d}))...

    欧拉筛...这样就可以(nlog n)预处理了...

    Code

    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    const int N = 1000050;
    const ll p = 1e9+7;
    
    ll Pow(ll a,ll b,ll r=1) { for(;b;b>>=1,a=a*a%p) if(b&1) r=r*a%p;return r; }
    
    ll inv2=Pow(2,p-2),inv6=Pow(6,p-2);
    ll S2(ll n) { return n*(n+1)%p*(2*n+1)%p*inv6%p; }
    ll S1(ll n) { return n*(n+1)%p*inv2%p; }
    ll S1(ll l,ll r) { return S1(r)-S1(l-1); }
    ll g(ll n) { return (n*n%p-3*n+2+p)%p; }
    
    int cp,pr[N],b[N],mu[N];
    ll f[N];
    
    void pre(int n) {
    	mu[1]=1;
    	for(int i=2;i<=n;i++) {
    		if(!b[i]) pr[++cp]=i,mu[i]=-1;
    		for(int j=1;j<=cp && i*pr[j]<=n;j++) {
    			b[i*pr[j]]=1;
    			if(i%pr[j]) mu[i*pr[j]]=-mu[i];
    			else break;
    		}
    	}
    	for(int i=1;i<=n;i++) for(int j=i;j<=n;j+=i) f[j]=(f[j]+g(i)*mu[j/i]%p+p)%p;
    	for(int i=1;i<=n;i++) f[i]=(f[i-1]+f[i])%p;
    }
    map<int,int> mp;
    
    ll S(ll n) {
    	if(n<=1000000) return f[n];
    	if(mp.count(n)) return mp[n];
    	ll fn=((S2(n)-3*S1(n)+2*n)%p+p)%p;
    	for(int i=2,j;i<=n;i=j+1) {
    		j=n/(n/i);
    		fn=(fn-(j-i+1)*S(n/i)%p+p)%p;
    	}return mp[n]=fn;
    }
    int main() {
    	int T,n;
    	for(pre(1000000),scanf("%d",&T);T--;) {
    		scanf("%d",&n);
    		printf("%lld
    ",S(n));
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    js设计模式之 适配器模式与应用场景
    2017版本的IDEA
    JAVA实验六——图形用户界面设计——6-47选择整数计算
    升级apache版本
    基于 PVE + TrueNAS 的私有云配置流程
    基于Win10+VS2019的ceres-solver-2.0.0配置流程
    基于PVE+ROS+LEDE的软路由配置流程
    启动android studio
    vscode配置
    找不到https://raw.githubusercontent.com
  • 原文地址:https://www.cnblogs.com/beiyuoi/p/6755019.html
Copyright © 2011-2022 走看看