【題意】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#includeview codeusing
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;
}
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 ...