杜教篩刷一波

2021-08-18 18:10:07 字數 1278 閱讀 6916

積性(完全積性)函式字首和,狄利克雷卷積字首和

假設現在求f的字首和:

公式為:

也就是構造h,g使得 h=f*g  其中h的字首和好求 假設我們要求的是f=μ

怎麼構造?  注意到 μ*i=e  i(n)=1 e(n)=[n==1] e的字首和好求,所以h=e,e=i

h(n)字首和=1,g(i)=1,帶入上面的公式即可

小規模打表,大規模map記憶化,取模

關鍵點就是卷積哪個函式方便求和

莫比烏斯函式字首和1e10

#include#include #includeusing namespace std;

using namespace std::tr1;

#define ll long long

const int maxn=4600005;

int mu[maxn];

int pri[1000005];

bool isp[maxn];

mapmp;

void init(int n)

else mu[i*pri[j]]=mu[i]*-1;

} mu[i]+=mu[i-1]; }}

ll dfs(ll x)

mp[x]=res;

return res;

}int main()

ll inv(ll t, ll p)

mapmp;

ll inv6;

ll inv2=500000004;

ll get(ll x)

ll dfs(ll x)

return mp[x]=(res%mod);

}int main()

else mu[i*pri[j]]=-mu[i];

} }for(ll i=1;i<=n;i++) }

ll inv(ll t, ll p)

mapmp;

ll inv6;

ll inv2=500000004;

ll get(ll x)

ll dfs(ll x)

return mp[x]=(res%mod);

}int main()

}

習題 杜教篩(Sum)(杜教篩)

傳送門杜教篩的板子,拿來練手 beginans sum phi i end g n 1,phi n f n h n sum phi d g frac n h n sum f d g frac 令f n sum f i h n sum h i beginh n sum h i sum sum f d ...

杜教篩刷題總結

其實只有一道題 2020.01.01update 部落格鍋了非常抱歉,感謝sbskyh tdcp指出 n 很小可以考慮列舉 1 到 n 對於乙個列舉出來的 n 考慮把 n 拆為 x y 其中 x 為 n 的每個質因子的1次方的乘積,y frac s n,m sum limits varphi s n...

模板 杜教篩

杜教篩用來解決積性函式求字首和的問題。複雜度為 o n frac 適用情況 已知函式 f 求 sum f 存在 f g f 且 g,sum g,f,sum f 容易求出。常用公式 mu i n 1 varphi i id 以求 sum mu 為例。mu i n 1 sum i 1 1 1 sum i...