Lcm bzoj-4659 bzoj-2694

题目大意:给出A,B,考虑所有满足l<=a<=A,l<=b<=B,且不存在n>1使得n^2同时整除a和b的有序数对(a,b),求其lcm(a,b)之和。答案模2^30。

注释:$1\le A,B\le 4\cdot 10^6$,$1\le cases \le 2000$。

想法:这题是一道挺好的题,它的好在于对于题目的转化。

这题目描述,没个做,我们将它转化一下

$\ \ \sum\limits_{i=1}^A\sum\limits_{j=1}^Blcm(i,j)\mu(gcd(i,j))^2$

这时,就变成了一道反演的题目了。

$=\sum\limits_{i=1}^A\sum\limits_{j=1}^B\sum\limits_{d|i,d|j}[gcd(i,j)=d]\frac{ij}{d}\mu(d)^2$

$=\sum\limits_{d=1}^A\sum\limits_{i=1}^{\lfloor\frac{A}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{B}{d}\rfloor}[gcd(i,j)==1]\cdot dij \cdot \mu(d)^2$

$=\sum\limits_{d=1}^{A}\mu(d)^2d\sum\limits_{i=1}^{\lfloor\frac{A}{d}\rfloor}i\sum\limits_{j=1}^{\lfloor\frac{B}{d}\rfloor}j\sum\limits_{e|i,e|j}\mu(e)$

$=\sum\limits_{d=1}^A\mu(d)^2d\sum\limits_{e=1}^{\lfloor\frac{A}{d}\rfloor}\mu(e)e^2\sum\limits_{i=1}^{\lfloor\frac{A}{de}\rfloor}i\sum\limits_{j=1}^{\lfloor\frac{B}{de}\rfloor}j$

$=\sum\limits_{D=1}^AD\sum\limits_{d|D}\mu(d)^2\mu(\frac{D}{d})\frac{D}{d}sum(\lfloor\frac{A}{D}\rfloor)sum(\lfloor\frac{B}{D}\rfloor)$

此时,我们设函数

$f(x)=\sum\limits_{d|x}\mu(d)^2\mu(\frac{x}{d})\frac{x}{d}$

$g(x)=\mu(x)^2$

$h(x)=x\cdot\mu(x)$

因为g函数为积性函数,h函数为积性函数,所以函数$g\cdot h$为积性函数,故f函数为积性函数,所以我们可以线性筛。

最后,附上丑陋的代码... ...

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
const ll N=4000000;
ll pri[N/10],np[N+10];
ll f[N+10],s[N+10],sum[N+10],ans,msk;
ll num,cases,n,m;
inline char nc()
{
static char buf[100000],*p1,*p2;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline int read()
{
int x=0;char c=nc();
while(!isdigit(c))c=nc();
while(isdigit(c))x=x*10+c-'0',c=nc();
return x;
}
int main()
{
ll p,last;
f[1]=s[1]=sum[1]=1;
msk=1,msk<<=30,msk--;
for(int 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(int 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);
}
}
cases=read();
while(cases--)
{
n=read(),m=read(),ans=0;
if(n>m) swap(n,m);
for(int 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("%lld\n",ans&msk);
}
return 0;
}

小结:反演好玩qwq...

[bzoj4659\2694]Lcm_数论_莫比乌斯反演的更多相关文章

  1. BZOJ_3994_[SDOI2015]约数个数和_莫比乌斯反演

    BZOJ_3994_[SDOI2015]约数个数和_莫比乌斯反演 Description  设d(x)为x的约数个数,给定N.M,求   Input 输入文件包含多组测试数据. 第一行,一个整数T,表 ...

  2. 模板:数论 & 数论函数 & 莫比乌斯反演

    作为神秘奖励--?也是为了方便背. 所有的除法都是向下取整. 数论函数: \((f*g)(n)=\sum_{d|n}f(d)g(\frac{n}{d})\) \((Id*\mu)(n)=\sum_{d ...

  3. 【CCPC-Wannafly Winter Camp Day3 (Div1) F】小清新数论(莫比乌斯反演+杜教筛)

    点此看题面 大致题意: 让你求出\(\sum_{i=1}^n\sum_{j=1}^n\mu(gcd(i,j))\). 莫比乌斯反演 这种题目,一看就是莫比乌斯反演啊!(连莫比乌斯函数都有) 关于莫比乌 ...

  4. BZOJ_3529_[Sdoi2014]数表_莫比乌斯反演+树状数组

    Description 有一张 n×m 的数表,其第 i 行第 j 列(1 <= i <= n, 1 <= j <= m)的数值为 能同时整除 i 和 j 的所有自然数之和.给 ...

  5. 【bzoj 3601】一个人的数论 (莫比乌斯反演+伯努利数)

    题解: (吐槽:网上题解那个不严谨猜测真是没谁了……关键是还猜得辣么准……) 直接化简到求和那一段: $f_{d}(n)=\sum_{t|n}\mu(t)t^{d}\sum_{i=1}^{\frac{ ...

  6. 【BZOJ 2671】 2671: Calc (数论,莫比乌斯反演)

    2671: Calc Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 303  Solved: 157 Description 给出N,统计满足下面条件 ...

  7. BZOJ4176 Lucas的数论 【莫比乌斯反演 + 杜教筛】

    题目 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目"求Sigma(f(i)),其中1<=i<=N", ...

  8. bzoj 4176: Lucas的数论【莫比乌斯反演+杜教筛】

    首先由这样一个结论: \[ d(ij)=\sum_{p|i}\sum_{q|j}[gcd(p,q)==1] \] 然后推反演公式: \[ \sum_{i=1}^{n}\sum_{j=1}^{n}\su ...

  9. [bzoj3529][Sdoi2014]数表_树状数组_莫比乌斯反演

    数表 bzoj-3529 Sdoi-2014 题目大意:n*m的数表,第i行第j列的数是同时整除i和j的所有自然数之和.给定a,求数表中所有不超过a的和. 注释:$1\le n,m \le 10^5$ ...

随机推荐

  1. 安卓Recovery模式该怎么用?【转】

    本文转载自:http://android.baike.com/article-109914.html 安卓系统出了名的刷机刷机再刷机,说起刷机就不能不谈Recovery模式,这项刷机过程中最重要的一到 ...

  2. SQL 琐碎记录

    1. 查看mysql现在已提供什么存储引擎: SHOW ENGINES ; 2. 查看mysql当前默认的存储引擎: SHOW VARIABLES LIKE '%storage_engine%'; 3 ...

  3. hdoj--1418--抱歉(水题)

     抱歉 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. hdoj--5104--Primes Problem(素数打表)

    Primes Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  5. hdu 5823 color II —— 子集DP

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5823 看博客:http://www.cnblogs.com/SilverNebula/p/5929550. ...

  6. ECharts-热力图实例

    1.引入echarts.js 2.页面js代码 //用ajax获取所需要的json数据 $.get("../../../mall/queryPageWtSrPost.do", { ...

  7. thinkphp3.2 验证码生成和点击刷新验证码

    生成验证码的时候: public function verify_c(){ $Verify = new \Think\Verify(); $Verify->fontSize = 18; $Ver ...

  8. 使用node成功安装完某插件typescript后,在使用时提示:tsc(或xxx)不是内部或外部命令,也不是可运行的程序或批处理文件

    具体出错情形: 使用npm安装typescript明明安装成功,但在使用时一直报错,报错语句为  tsc不是内部或外部命令,也不是可运行的程序或批处理文件 具体出错原因: node未正确安装,或相关环 ...

  9. xml之基本操作

    XML:Extensible Markup Language(可扩展标记语言)的缩写,是用来定义其它语言的一种元语言,其前身是SGML(Standard Generalized Markup Lang ...

  10. Laravel5.1学习笔记3 HTTP中间件

    HTTP 中间件 简介 建立中间件 注册中间件 可终止中间件 简介 HTTP 中间件提供一个方便的机制来过滤进入应用程序的 HTTP 请求,例如,Laravel 默认包含了一个中间件来检验用户身份验证 ...