Bzoj2154 Crash的数字表格 乘法逆元+莫比乌斯反演(TLE)
题意:求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)的更多相关文章
- 【题解】Crash的数字表格 BZOJ 2154 莫比乌斯反演
题目传送门 http://www.lydsy.com/JudgeOnline/problem.php?id=2154 人生中第一道自己做出来的莫比乌斯反演 人生中第一篇用LaTeX写数学公式的博客 大 ...
- [luogu1829][bzoj2154][国家集训队]Crash的数字表格 / JZPTAB【莫比乌斯反演】
传送门:洛谷,bzoj 题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时整除a和b的最小正整 ...
- 洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)
传送门 式子好麻烦orz……大佬好腻害orz->这里 //minamoto #include<iostream> #include<cstdio> #define ll ...
- 洛谷 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 ...
- BZOJ2154 Crash的数字表格 【莫比乌斯反演】
BZOJ2154 Crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b) ...
- 【莫比乌斯反演】BZOJ2154 Crash的数字表格
Description 求sigma lcm(x,y),x<=n,y<=m.n,m<=1e7. Solution lcm没有什么直接做的好方法,用lcm=x*y/gcd转成gcd来做 ...
- BZOJ2154: Crash的数字表格 & BZOJ2693: jzptab
[传送门:BZOJ2154&BZOJ2693] 简要题意: 给出n,m,求$\sum_{i=1}^{n}\sum_{j=1}^{m}LCM(i,j)$ 题解: 莫比乌斯反演(因为BZOJ269 ...
- 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 ...
- 莫比乌斯反演套路三、四--BZOJ2154: Crash的数字表格 && BZOJ2693: jzptab
t<=1e4个询问每次问n,m<=1e7,$\sum_{1\leqslant x \leqslant n,1 \leqslant y\leqslant m}lcm(x,y)$. 首先题目要 ...
随机推荐
- SQL2008使用json.net实现XML与JSON互转
借助CLR,首先实现字符串的互转,然后使用存储过程实现JSON2table public class JsonFunction { /// <summary> ...
- 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)
邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...
- MVC学习系列1--什么是MVC
上面的虚线表示:被动角色.实线表示:主动角色. 1.控制器和视图:控制器和视图是双向的关系,但控制器的关系更主动. 当控制器是主动的角色的时候,控制器决定要显示哪一个View:当视图为主动角色时,视图 ...
- Oracle创建表空间、创建用户以及授权
Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库. 为了避免麻烦,可以用’Database Configuration Assistant’向导来创建数 ...
- SQL Server 2012 实现分页新语法
最近一直在看SQL Server的书,不过看的都是基础的查询流,查询在工作中用到的最多,所以能正确地查询出想要的数据也是很重要的嘛. 在书上看到在SQL Server 2012新增了一种实现分页的查询 ...
- MYSQL介绍安装及一些问题解决
一.简介 MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发.发布并支持的.有以下特点: MySQL是一种数据库管理系统. MySQL是一种关联数据库管理系统. MySQ ...
- 实战:考虑性能--Solr索引的schema设计
从 high level 的角度来看,schema.xml 结果如下,这个例子虽然不是一个真实的XML,但是简洁明了的传达了shema的概念. <schema> <types> ...
- Topshelf 创建windows服务注意事项
其中项目应该是控制台应用程序 test.exe需要赋与管理员权限,右键属性可以定义. test.exe install test.exe unstall
- 内存管理内幕mallco及free函数实现
原文:https://www.ibm.com/developerworks/cn/linux/l-memory/ 为什么必须管理内存 内存管理是计算机编程最为基本的领域之一.在很多脚本语言中,您不必担 ...
- Centos网络配置
网上搜索:centos网络配置的方法,主要包括dns.网关.IP地址,主要是配置resolv.conf\network\ifcfg-eth0这些网络配置文件. 稍后我会就centos7的网络配置进行实 ...