【BZOJ2694】Lcm 莫比乌斯反演+线性筛

【BZOJ2694】Lcm

Description

对于任意的>1的n gcd(a, b)不是n^2的倍数
也就是说gcd(a, b)没有一个因子的次数>=2

Input

一个正整数T表示数据组数

接下来T行 每行两个正整数 表示N、M

Output

T行 每行一个整数 表示第i组数据的结果

Sample Input

4
2 4
3 3
6 5
8 3

Sample Output

24
28
233
178

HINT

HINT
T <= 10000

N, M<=4000000

题解:一个数不包含平方因子等价于mu(i)^2=1,所以可以推式子啦:

设$f(D)=\sum\limits_{D=1}^n\sum\limits_{d|D}\mu(d)^2\mu({D\over d}){D\over d}$,然后只要线性筛出f(D)就行了。

还是先考虑D是质数的k次方的情况,若$D=p$,则$f(D)=1 \times 1 \times 1+1 \times (-1) \times p=1-p$;若$D=p^2$,则$f(D)=0+1 \times -1 \times p+0$;若p的次数大于2呢?则$\mu(d)$和$\mu({D\over d})$中一定有一个等于0,所以f(D)=0。

然后就可以根据积性函数的性质线性筛了。

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef unsigned int ui;
const ui N=4000000;
ui pri[N/10],np[N+10];
ui f[N+10],s[N+10],sum[N+10],ans,msk;
ui num,T,n,m;
inline ui rd()
{
	ui ret=0;	char gc=getchar();
	while(gc<‘0‘||gc>‘9‘)	{gc=getchar();}
	while(gc>=‘0‘&&gc<=‘9‘)	ret=ret*10+gc-‘0‘,gc=getchar();
	return ret;
}
int main()
{
	ui i,j,p,last;
	f[1]=s[1]=sum[1]=1;
	msk=1,msk<<=30,msk--;
	for(i=2;i<=N;i++)
	{
		if(!np[i])	pri[++num]=i,f[i]=1-i;
		s[i]=s[i-1]+f[i]*i,sum[i]=sum[i-1]+i;
		for(j=1;j<=num&&i*pri[j]<=N;j++)
		{
			p=pri[j],np[i*p]=1;
			if(i%p==0)
			{
				if(i%(p*p)==0)	f[i*p]=0;
				else	f[i*p]=f[i/p]*(-p);
				break;
			}
			f[i*p]=f[i]*(1-p);
		}
	}
	T=rd();
	while(T--)
	{
		n=rd(),m=rd(),ans=0;
		if(n>m)	swap(n,m);
		for(i=1;i<=n;i=last+1)
		{
			last=min(n/(n/i),m/(m/i));
			ans+=(s[last]-s[i-1])*sum[n/i]*sum[m/i];
		}
		printf("%u\n",ans&msk);
	}
	return 0;
}
时间: 2024-10-05 04:23:08

【BZOJ2694】Lcm 莫比乌斯反演+线性筛的相关文章

【bzoj4407】于神之怒加强版 莫比乌斯反演+线性筛

题目描述 给下N,M,K.求 输入 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示. 输出 如题 样例输入 1 2 3 3 样例输出 20 题解 莫比乌斯反演+线性筛 $\sum\limits_{i=1}^n\sum\limits_{j=1}^m\gcd(i,j)^k\\=\sum\limits_{d=1}^{\min(n,m)}d^k\sum\limits_{i=1}^n\sum\limits

【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛

题目描述 对于正整数x,定义f(x)为x所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0.给定正整数n,m,求$\sum\limits_{i=1}^n\sum\limits_{j=1}^mf(\gcd(i,j))$ 输入 第一行一个数T,表示询问数.接下来T行,每行两个数n,m,表示一个询问. 输出 对于每一个询问,输出一行一个非负整数作为回答. 样例输入 4 7558588 9653114 6514903 445121

bzoj 3309 DZY Loves Math - 莫比乌斯反演 - 线性筛

对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b,求sigma(sigma(f(gcd(i,j)))) (i=1..a, j=1..b). Input 第一行一个数T,表示询问数. 接下来T行,每行两个数a,b,表示一个询问. Output 对于每一个询问,输出一行一个非负整数作为回答. Sample Input 4 7558588 9653114 6514903 445

BZOJ 2693: jzptab [莫比乌斯反演 线性筛]

2693: jzptab Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1194  Solved: 455[Submit][Status][Discuss] Description Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M Output T行 每行一个整数 表示第i组数据的结果 Sample Input 1 4 5 Sample Output 122 HINT T <= 10000 N, M<=1000000

hdu.5212.Code(莫比乌斯反演 &amp;&amp; 线性筛)

Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 300    Accepted Submission(s): 124 Problem Description WLD likes playing with codes.One day he is writing a function.Howerver,his computer b

[bzoj2440]完全平方数[中山市选2011][莫比乌斯函数][线性筛][二分答案]

题意:求第k个分解质因子后质因子次数均为一的数,即求第k个无平方因子数. 题解: 首先二分答案mid,那么现在就是要求出mid以内的无平方因子数的个数. 其次枚举$\sqrt{mid}$内的所有质数,由容斥原理 $Num=0个质数平方的倍数的数量(1的倍数)-1个质数平方的倍数的数量(9,25...的倍数)$ $+2个质数平方的倍数的数量(36,100...的倍数)...$ 可以发现对于一个数x,x的倍数数量对答案的贡献符号为$\mu(x)$. 例如:9的倍数数量最答案的贡献是$\mu(9)\l

bzoj 3309 DZY Loves Math——反演+线性筛

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3309 像这种数据范围,一般是线性预处理,每个询问 sqrt (数论分块)做. 先反演一番.然后 f( ) 还不能一个就花 log 的时间,所以要分析性质. 设 n 一共 m 个质因数,其中最大的指数是 t . 已有 Σ(d|n) f(d)*u(n/d) ,如果 u( ) 的部分含有指数>=2的质因子,就无贡献:所以 u( ) 里每种质因数选1个或0个,一共 2^m 种. 如果 n 里有一个

bzoj 4407 于神之怒加强版 (反演+线性筛)

于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MBSubmit: 1184  Solved: 535[Submit][Status][Discuss] Description 给下N,M,K.求 Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示. Output 如题 Sample Input 1 2 3 3 Sample Output 20

[莫比乌斯反演]【学习笔记】[更新中]

参考资料: [大部分还没看完,目前主要看了popoqqq那篇 orz] http://wenku.baidu.com/link?url=Kzzxkk64CFU7sfDeJbGKNpZpFJzJY1ZwNoaPgGo7tPSpv4KJvGAkStkpzytG46gjQuqNX7NB0merxfS4knD2H5fw7s4oHu1o1-6p16_VbEm http://wenku.baidu.com/view/77396ebb27d3240c8547ef2e.html?re=view 浅谈一类积性函数