1. 程式人生 > >[莫比烏斯反演 積性函式字首和] BZOJ 2693 jzptab

[莫比烏斯反演 積性函式字首和] BZOJ 2693 jzptab

2154的加強版

可以發現 由莫比烏斯函式組成的積性函式 在 prime[j]|i 轉移時 多出來的u(p*p*a)=0部分不記的 只需考慮F(x) 中的x 乘上了p對之前的影響



#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
typedef long long ll;

inline char nc()
{
	static char buf[100000],*p1=buf,*p2=buf;
	if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; }
	return *p1++;
}

inline void read(int &x)
{
	char c=nc(),b=1;
	for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1;
	for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;
}

const int maxn=10000000,P=100000009;
int prime[maxn],vst[maxn],tot;

ll sum[maxn];

inline void Init(){
	sum[1]=1;
	for (int i=2;i<=maxn;i++)
	{
		if (!vst[i]){
			prime[++tot]=i; sum[i]=(ll)i*(i-1)%P; sum[i]=(P-sum[i])%P;
		}
		for (int j=1;(ll)prime[j]*i<=maxn && j<=tot;j++)
		{
			vst[i*prime[j]]=1;
			if (i%prime[j]==0){
				sum[i*prime[j]]=sum[i]*prime[j]%P;
				break;
			}
			sum[i*prime[j]]=sum[i]*sum[prime[j]]%P;
		}
	}
	for (int i=1;i<=maxn;i++)
		(sum[i]+=sum[i-1])%=P;
}

inline ll Sum(ll x,ll y){
	return (x*(x+1)/2%P)*(y*(y+1)/2%P)%P;
}

inline void Solve(int n,int m){
	if (n>m) swap(n,m);
	ll ans=0; int last;
	for (int i=1;i<=n;i=last+1)
	{
		last=min(n/(n/i),m/(m/i));
		ans+=Sum(n/i,m/i)*(sum[last]-sum[i-1]);
		ans=(ans%P+P)%P;
	}
	printf("%lld\n",ans);
}

int main()
{
	int T,n,m;
	Init();
	read(T);
	while (T--){
		read(n); read(m);
		Solve(n,m);
	}
	return 0;
}


相關推薦

[ 函式字首] BZOJ 2693 jzptab

2154的加強版 可以發現 由莫比烏斯函式組成的積性函式 在 prime[j]|i 轉移時 多出來的u(p*p*a)=0部分不記的 只需考慮F(x) 中的x 乘上了p對之前的影響 #inclu

HDU 6134 && 2017 多校訓練:Battlestation Operational(+函式

實在太長了直接放題目連結 這題就是求 考慮當Gcd(i, j)==1時,除了j為1的情況,其它時候i/j一定是小數,所以i/j向上取整相當於向下取整的結果+1 那麼有:(其中φ(i)為小於i與i

HDU 6428 2018HDU多校賽 第十場 Calculate( + + 線性篩)

題意簡單粗暴,讓你求  。 與gcd有關,一般來說都是要上莫比烏斯來反演一下了。具體來說,我們先來推一些式子:                                      

BZOJ4804 尤拉心算(+尤拉函式+線性篩)

  一通套路後得Σφ(d)μ(D/d)⌊n/D⌋2。顯然整除分塊,問題在於怎麼快速計算φ和μ的狄利克雷卷積。積性函式的卷積還是積性函式,那麼線性篩即可。因為μ(pc)=0 (c>=2),所以f(pc)還是比較好算的,討論一波即可。 #include<iostream> #inclu

入門 HDOJ 1695:GCD 、BZOJ 2301: [HAOI2011]Problem b

下面我所說的都基於上面這篇部落格的內容。 莫比烏斯反演有兩種形式(mu表示莫比烏斯函式): HDOJ1695 GCD 求1<=x<=n,1<=y<=m中gcd(x,y)==k的(x,y)組數,注意(a,b)和(b,a)視為同一情況。 相當於計算

HDU 6340 2018HDU多校賽 第四場 Delightful Formulas(+伯努利數+NTT+

大致題意:給你k和m,還有n分解質因子之後的質因子及其對應的指數,讓你求 。 首先,這種含有gcd的式子,第一步肯定是進行莫比烏斯反演,這裡由於前面好幾篇都由類似的反演形式,所以我就不展開了,直接就得出反演之後的結果:              

函式部分(轉載)

莫比烏斯與積性函式 之前做過不少的數論題,關於莫比烏斯與積性函式的數論題挺多的。。。特地過來總結一下。。當作自己的一個回顧了-_- 先安利一下神犇tls的部落格和神犇PoPoQQQ的pdf !膜拜tls…跪popoqqq… 還有IOI金牌神犇任之州的集訓隊論文,都

Dirichlet卷

如果 bsp 滿足 常見 定義 row chl 莫比烏斯反演 nbsp 半夜不睡寫博客 1.Dirichlet卷積     定義2個數論函數f,g的Dirichlet卷積$(f*g)n=\sum_{d|n}f(d)g(\frac{n}{d})$     Dirichle

狄利克雷卷&&杜教篩&&

pos cnblogs title tar sdn aid www. article 前綴 狄利克雷卷積和莫比烏斯反演:鏈接 淺談一類積性函數的前綴和: 鏈接 賈誌鵬線性篩: 鏈接   讀賈誌鵬線性篩有感 (莫比烏斯函數的應用)   莫比烏斯函數 狄利

洛谷P3768 簡單的數學題(+狄利克雷卷+杜教篩)

ostream str lar .com 數學 logs tomato define show 傳送門 不會…… 兩篇加在一起都看不懂…… https://www.cnblogs.com/cellular-

狄利克雷卷

- 概念引入   - 數論函式     指定義域為正整數的函式     定義其加法為逐項相加,即$(f + g)(n) = f(n) + g(n)$     定義其數乘為逐項相乘,即$(xf)(n) = x × f(n)$   - 單位元     單位元是集合中一種特別的元素,當單位元與其它元素

狄利克雷卷 杜教篩 學習筆記

前置知識:一些數論函式,比如尤拉函式、莫比烏斯函式的一些性質,積性函式及性質,整除分塊。 這裡預設大家會前置知識,如果不會請自行學習。 之前嘗試看過,結果後來都忘光了,於是還是決定應該寫個學習筆記記錄一下。 首先開始介紹莫比烏斯反演。 我們設

luoguP4466 [國際集訓隊]

自然想到列舉\(gcd(a, b)\),不妨設其為\(d\),並且\(a = di, b = dj(a > b)\) 那麼\(\frac{ab}{a + b} = \frac{dij}{i + j}\) 由於此時有\((i,j) = 1\),因此\((i, i + j) = (j, i +

P3768 簡單的數學題 [狄利克雷卷,杜教篩,]

簡單的數學題 題目連線 題目描述 輸入一個正整數n,n≤1010n,n\le 10^{10}n,n≤1010和p,p≤1.1×109p,p \le 1.1 \times 10^9p,p≤1.1×109

[SPOJ VLATTICE]Visible Lattice Points 數論

string rst ase 計算 mod visible font sample poj 7001. Visible Lattice Points Problem code: VLATTICE Consider a N*N*N lattice.

【bzoj4176】Lucas的數論 +杜教篩

wid eight 前綴 .html != brush name load ans 題目描述 去年的Lucas非常喜歡數論題,但是一年以後的Lucas卻不那麽喜歡了。 在整理以前的試題時,發現了這樣一道題目“求Sigma(f(i)),其中1<=i<

【BZOJ2045】雙親數

namespace 一個 ron == true pac 公約數 ostream 都是 【BZOJ2045】雙親數 Description 小D是一名數學愛好者,他對數字的著迷到了瘋狂的程度。 我們以d = gcd(a, b)表示a、b的最大公約數,小D執著的認為,這樣

【bzoj2154】Crash的數字表格

name ros -1 led idt 莫比烏斯 style efi con 題目描述 今天的數學課上,Crash小朋友學習了最小公倍數(Least Common Multiple)。對於兩個正整數a和b,LCM(a, b)表示能同時被a和b整除的最小正整數。例如,LCM

isp init 我們 線性 spa 線性篩 之前 element int 莫比烏斯反演在許多情況下可以簡化運算。 定理:F(n)和f(n)是定義在非負整數集合上的兩個函數,並且滿足條件F(n)=∑d|n f(d)。 附:∑d|n 的意思是對所有n的因子d求和。 那麽,我

bzoj 2301 Problem b -

flag class memory sample sin swa scrip return lag Description 對於給出的n個詢問,每次求有多少個數對(x,y),滿足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y