题意:求sigma{lcm(i,j)},1<=i<=n,1<=j<=m

不妨令n<=m

首先把lcm(i,j)转成i*j/gcd(i,j)

正解不会...总之最后化出来的莫比乌斯反演式子并没有除法…

本脑子有坑选手的做法:20101009是一个质数,而且n和m的范围小于20101009,这一定有其原因。经过仔细思考,我们发现这保证了每个1~n的数都有mod20101009意义下的乘法逆元。用inv[x]表示x的逆元,我们发现原先的式子等于sigma{inv[gcd(i,j)]*i*j},1<=i<=n,1<=j<=m

于是我们枚举g=gcd(i,j)则原式等于sigma{inv[g]*H(g)},1<=g<=n

H(g)=sigma{i*j},1<=i<=n,1<=j<=m,gcd(i,j)==g.

定义h(g)= sigma{i*j},1<=i<=n,1<=j<=m,g|gcd(i,j),我们发现,h(g)可以方便地求出,且h(g)是H(g)的倍数和,这启发我们使用莫比乌斯反演,H(g)=sigma{mu(q/g)*h(q)},g|q,1<=q<=n接下来我们将式子变形为先枚举q,则原式=sigma{h(q)*sigma{inv[g]*mu(q/g),g|q}}1<=q<=n

我们知道莫比乌斯函数和乘法逆元都是积性函数,积性函数的积,积性函数的约数和也是积性函数,这启发我们用线性筛预处理G(q)=sigma{inv[g]*mu(q/g),g|q}!接下来暴力枚举q即可。

而1-n所有数的逆元也有线性的方法可以求出,

综上,我们得到了一个时空复杂度均为O(n)的优越算法(大雾)。

然而常数大,T得飞起….

#include<cstdio>
#include<ctime>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=;const ll mod=;
int niyuan[maxn];
bool flag[maxn];
int prime[maxn/],mu[maxn],f[maxn],h[maxn],g[maxn],tot;
void linear(){
niyuan[]=;f[]=;
// for(int i=2;i<maxn;++i)niyuan[i]=niyuan[mod%i]*niyuan[mod%i]%mod*(mod/i)%mod*(mod/i)%mod*i%mod;//常数已炸天,0.6s+
int tmp;
for(int i=,last;i<maxn;i=last+){
last=mod/(mod/i);
tmp=mod/i;tmp=tmp*1LL*tmp%mod;
for(int j=i;j<=last&&j<maxn;++j)niyuan[j]=niyuan[mod%j]*1LL*niyuan[mod%j]%mod*tmp*j%mod;
}
mu[]=;
for(int i=;i<maxn;++i){
if(!flag[i]){
prime[++tot]=i;mu[i]=-;
f[i]=mu[i]+niyuan[i];h[i]=i;g[i]=;
}
for(int j=;j<=tot&&prime[j]*i<maxn;++j){
tmp=i*prime[j];
flag[tmp]=true;
if(i%prime[j]==){
mu[tmp]=;
g[tmp]=g[i];
h[tmp]=h[i]*1LL*prime[j]%mod;
f[tmp]=f[g[i]]*1LL*(niyuan[h[i]*1LL*prime[j]%mod]-niyuan[h[i]]+mod)%mod;
break;
}else{
mu[tmp]=-mu[i];
h[tmp]=prime[j];
g[tmp]=i;
f[tmp]=f[i]*1LL*f[prime[j]]%mod;
}
}
}
}
int n,m;
ll f2(ll x){
ll a=n/x,b=m/x;
return a*(a+)%mod*b%mod*(b+)%mod*niyuan[]%mod*x*x%mod;
}
int solve(){
if(n>m)swap(n,m);
int ans=;
for(int d=;d<=n;++d){
ans=ans+f2(d)*f[d]%mod;ans%=mod;
}
return ans;
}
int main(){
linear();
scanf("%d%d",&n,&m);
printf("%d\n",solve());
return ;
}

UPD:线性筛改成筛到min(n,m)而不是筛到maxn,因为小数据比较多,按总时限在bzoj卡过去了,感人肺腑(虽然极限数据的单点时限还是会T)

(有个数组开longlong结果MLE了)

Bzoj2154 Crash的数字表格 乘法逆元+莫比乌斯反演(TLE)的更多相关文章

  1. 【题解】Crash的数字表格 BZOJ 2154 莫比乌斯反演

    题目传送门 http://www.lydsy.com/JudgeOnline/problem.php?id=2154 人生中第一道自己做出来的莫比乌斯反演 人生中第一篇用LaTeX写数学公式的博客 大 ...

  2. [luogu1829][bzoj2154][国家集训队]Crash的数字表格 / JZPTAB【莫比乌斯反演】

    传送门:洛谷,bzoj 题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时整除a和b的最小正整 ...

  3. 洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)

    传送门 式子好麻烦orz……大佬好腻害orz->这里 //minamoto #include<iostream> #include<cstdio> #define ll ...

  4. 洛谷 P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)

    题意:求$\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)$. 开始开心(自闭)化简: $\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)$ =$\su ...

  5. BZOJ2154 Crash的数字表格 【莫比乌斯反演】

    BZOJ2154 Crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b) ...

  6. 【莫比乌斯反演】BZOJ2154 Crash的数字表格

    Description 求sigma lcm(x,y),x<=n,y<=m.n,m<=1e7. Solution lcm没有什么直接做的好方法,用lcm=x*y/gcd转成gcd来做 ...

  7. BZOJ2154: Crash的数字表格 & BZOJ2693: jzptab

    [传送门:BZOJ2154&BZOJ2693] 简要题意: 给出n,m,求$\sum_{i=1}^{n}\sum_{j=1}^{m}LCM(i,j)$ 题解: 莫比乌斯反演(因为BZOJ269 ...

  8. bzoj2154: Crash的数字表格 莫比乌斯反演

    题意:求\(\sum_{i=1}^n \sum_{j=1}^m\frac{i*j}{gcd(i,j)}\) 题解:\(ans=\sum_{i=1}^n\sum_{j=1}^m \frac{i*j}{g ...

  9. 莫比乌斯反演套路三、四--BZOJ2154: Crash的数字表格 && BZOJ2693: jzptab

    t<=1e4个询问每次问n,m<=1e7,$\sum_{1\leqslant x \leqslant n,1 \leqslant y\leqslant m}lcm(x,y)$. 首先题目要 ...

随机推荐

  1. Linux MySQL源码安装缺少ncurses-devel包

    在Red Hat Enterprise Linux Server release 5.7 上用源码安装MySQL-5.6.23时,遇到了" remove CMakeCache.txt and ...

  2. Database 'xxx' cannot be upgraded because it is read-only or has read-only file Make the database or files writeable, and rerun recovery.

      在分离数据库DatabaseName(暂且用DatabaseName代替该数据库名)后,我将其数据文件以及日志文件移动到新增的磁盘上.然后附加该数据库,结果报如下错误: Database 'Dat ...

  3. [翻译]——SQL Server使用链接服务器的5个性能杀手

    前言: 本文是对博客http://www.dbnewsfeed.com/2012/09/08/5-performance-killers-when-working-with-linked-server ...

  4. PHP函数整理(二)

    以下均参考自 php.net 1.curl_setopt_array() 此函数为CURL传输会话批量设置选项.这个函数对于需要设置大量的curl选项是非常有用的,不需要重复的调用curl_setop ...

  5. RHEL7.2和RHEL6.5的配置网络yum源和本地yum源

    RHEL7.2配置本地yum源 [root@localhost ~]#monut /dev/sr0 /mnt      #挂载光盘 [root@localhost ~]# rm -rf /etc/yu ...

  6. android break 与 return 的区别

    break 的含义是中断,return 的含义是结束整个方法的执行. 区别. public static void main(String agrs[]){ int i; for(i=0;i<1 ...

  7. linux中的权限对于文件和目录的重要性

    对于文件 r 可以读取文件的实际内容 w 可以编辑文件的内容 x 文件可以被系统执行 对于目录 r 具有读取目录的结构列表,也就是说你可以用ls命令查看目录下的内容列表 w 可以建立新的文件,删除文件 ...

  8. Spring远程调用技术<2>-Hessian和Burlap

    上篇谈到RMI技术,加上Spring的封装,用起来很方便,但也有一些限制 这里的Hessian和Burlap解决了上篇提到的限制,因为他们是基于http的轻量级远程服务. Hessian,和RMI一样 ...

  9. angular监听

    监听中第三个参数,何时使用true? true的意思是“深度监听” 1.当监听对象属性变化时,而你监听的对象写得是对象,此时要用深度监听true: 2....... 监听耗资源,用完关闭 var wa ...

  10. 遭遇input与button按钮背景图失效不显示的解决办法

    笔者从事网页前端代码页面工程师已有多年,作为一个网页重构人员常常会遇到一些莫名其妙的DIV+CSS(正确的说法是XHTML+CSS)在 IE.FireFox火狐. 谷歌浏览器CHROME.苹果浏览器S ...