BZOJ 2693 jzptab 莫比烏斯反演

2022-04-30 02:57:11 字數 844 閱讀 3245

【題意】2154: crash的數字** 莫比烏斯反演,多組詢問,t<=10000。

【演算法】數論(莫比烏斯反演)

【題解】由上一題,

$ans=\sum_g\sum_\mu (d)*d^2*sum(n/gd,m/gd)$

令t=gd

$ans=\sum_sum(n/t,m/t)*t\sum_\mu (d)*d$

後面部分由積性函式的乘積和約數和也是積性函式可以線性篩得出。

當i%prime[j]=0時,相對於i多出來的因子必然由重複因子即μ(d)=0,故無視即可。

複雜度o(n+t√n)。

#include#include

using

namespace

std;

const

int n=1e7,maxn=1e7+10,mod=1e8+9;//

ints[maxn],sum[maxn],prime[maxn],tot,n,m;

bool

mark[maxn];

int sum(int x,int y)

intmain()

for(int j=1;j<=tot&&i*prime[j]<=n;j++)

s[i*prime[j]]=1ll*s[i]*s[prime[j]]%mod;

}sum[i]=(1ll*i*s[i]+sum[i-1])%mod;

}intt;

scanf("%d

",&t);

while(t--)

printf(

"%d\n

",ans);

}return0;

}

view code

bzoj2693 jzptab(反演LCM之和)

乙個正整數t表示資料組數 接下來t行 每行兩個正整數 表示n m t行 每行乙個整數 表示第i組資料的結果 1 4 5 t 10000 n,m 10000000 分析 關於式子的反演 lcm之和 我實在不想再來一遍,不過聽說舒老師有一種好方法,只能等ta傳授了 所以我們就有了這個式子 但是我們這樣就...

BZOJ2118 莫莫的等式

目錄題目傳送門 又是比較妙的一道題目,聽說這個方法似乎是叫同餘類 bfs 感覺有點像最短路啊。問題轉化一下,實際上就是乙個無限揹包的問題了。我們記 t 為 ai 中最小的數,接下來考慮 dis i 表示能夠構成乙個數 q 且 q mod t i 並且 q 為滿足條件的最小的數,然後我們對於 bmin...

bzoj3585 莫隊 分塊

description 有乙個長度為n的陣列。m次詢問,每次詢問乙個區間內最小沒有出現過的自然數。input 第一行n,m。第二行為n個數。從第三行開始,每行乙個詢問l,r。output 一行乙個數,表示每個詢問的答案。sample input 5 52 1 0 2 1 3 32 3 2 41 2 ...