正题

P3312


题目大意

给出n,m,a,求∑i=1n∑j=1mσ(gcd(i,j))[σ(gcd(i,j))≤a]\sum_{i=1}^n\sum_{j=1}^m\sigma(gcd(i,j))[\sigma(gcd(i,j))\leq a]i=1∑n​j=1∑m​σ(gcd(i,j))[σ(gcd(i,j))≤a]


解题思路

先不考虑a的条件限制
∑i=1n∑j=1mσ(gcd(i,j))\sum_{i=1}^n\sum_{j=1}^m\sigma(gcd(i,j))i=1∑n​j=1∑m​σ(gcd(i,j))
∑d=1nσ(d)∑i=1n/d∑j=1m/d∑c∣i,c∣jμ(c)\sum_{d=1}^n\sigma(d)\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}\sum_{c|i,c|j}\mu(c)d=1∑n​σ(d)i=1∑n/d​j=1∑m/d​c∣i,c∣j∑​μ(c)
∑d=1nσ(d)∑c∣i,c∣jμ(c)⌊ncd⌋⌊mcd⌋\sum_{d=1}^n\sigma(d)\sum_{c|i,c|j}\mu(c)\left\lfloor\frac{n}{cd}\right\rfloor\left\lfloor\frac{m}{cd}\right\rfloord=1∑n​σ(d)c∣i,c∣j∑​μ(c)⌊cdn​⌋⌊cdm​⌋

设k=cd,枚举k

∑k=1n⌊nk⌋⌊mk⌋∑d∣kσ(d)μ(kd)\sum_{k=1}^n\left\lfloor\frac{n}{k}\right\rfloor\left\lfloor\frac{m}{k}\right\rfloor\sum_{d|k}\sigma(d)\mu(\frac{k}{d})k=1∑n​⌊kn​⌋⌊km​⌋d∣k∑​σ(d)μ(dk​)

对于后面一部分可以预处理出来

然后整除分块即可

考虑a的限制条件,可以离线处理

先对a进行排序,只计算满足条件的d,对于一段区间的和可以用树状数组

时间复杂度 O(Tnlogn)O(T\sqrt{n}\ log\ n)O(Tn​ log n)


code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 100100
#define mod 2147483648
#define mp make_pair
#define fs first
#define sn second
using namespace std;
ll t,w,n,m,ans,now,g[N],f[N],p[N],c[N],qs[N],mu[N],prime[N];
pair<ll,ll>a[N];
struct node
{ll n,m,a,v;
}q[N];
bool cmp(node a,node b)
{return a.a<b.a;
}
void work()
{mu[1]=f[1]=1;for(ll i=2;i<=1e5;++i){if(!p[i]){prime[++w]=i;mu[i]=-1;f[i]=i+1;g[i]=i+1;}for(ll j=1;j<=w&&i*prime[j]<=1e5;++j){p[i*prime[j]]=1;if(i%prime[j]==0){g[i*prime[j]]=g[i]*prime[j]+1;f[i*prime[j]]=f[i]/g[i]*g[i*prime[j]];}else{mu[i*prime[j]]=-mu[i];g[i*prime[j]]=prime[j]+1;f[i*prime[j]]=f[i]*g[i*prime[j]];}}}for(ll i=1;i<=1e5;++i)a[i]=mp(f[i],i);sort(a+1,a+1+100000);return;
}
void add(ll x,ll y)
{for(;x<=1e5;x+=x&-x)(c[x]+=y)%=mod;return;
}
ll ask(ll x)
{ll sum=0;for(;x;x-=x&-x)(sum+=c[x])%=mod;return sum;
}
int main()
{scanf("%lld",&t);for(ll i=1;i<=t;++i){scanf("%lld%lld%lld",&q[i].n,&q[i].m,&q[i].a);q[i].v=i;}sort(q+1,q+1+t,cmp);work();now=1;for(ll i=1;i<=t;++i){while(now<=1e5&&a[now].fs<=q[i].a){for(ll j=1;a[now].sn*j<=1e5;++j)add(a[now].sn*j,(a[now].fs*mu[j]%mod+mod)%mod);now++;}ans=0;n=q[i].n;m=q[i].m;for(ll l=1,r=0;l<=min(n,m);l=r+1){r=min(n/(n/l),m/(m/l));(ans+=(ask(r)-ask(l-1)+mod)%mod*(n/l)%mod*(m/l)%mod)%=mod;}qs[q[i].v]=ans;}for(int i=1;i<=t;++i)printf("%lld\n",qs[i]);return 0;
}

【数论】数表(P3312)相关推荐

  1. P3312 [SDOI2014]数表(离线 + 树状数组前缀和优化)

    P3312 [SDOI2014]数表 推式子 ∑i=1n∑j=1mσ(gcd(i,j))∑d=1nσ(d)∑i=1nd∑j=1md[gcd(i,,j)==1]∑d=1nσ(d)∑d=1ndμ(k)nk ...

  2. (每日一题)P3312 [SDOI2014]数表(经典莫比乌斯反演 + 树状数组维护离线询问)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.11 莫反 P3312 [SDOI2 ...

  3. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  4. 算法之基础数论应用篇(一)

    基础数论应用篇 子集和 题目描述 筛质数 筛质数模板 欧拉筛 线性筛 哥德巴赫猜想 夏洛克和他的女朋友 二次筛法 分解质因数 试除法分解质因数 分解阶乘质因子 快速幂 模板 快速幂 快速乘法 序列的第 ...

  5. 「BZOJ 3529」「SDOI 2014」数表「莫比乌斯反演」

    题意 有一张 \(n\times m\) 的数表,其第\(i\)行第\(j\)列的数值为能同时整除\(i\)和\(j\)的所有自然数之和. \(T\)组数据,询问对于给定的 \(n,m,a\) , 计 ...

  6. [原创]数论个人模板

    作为一个ACMer不可能没有自己的模板,并不是别人的模板你都能看的懂,所以有自己的模板很重要,下面是我自己一边培训一边整的数论模板,内容很少都是一些数论基础模板(毕竟不是大牛),但是此博客会一直更新的 ...

  7. matlab狄利克雷函数,数论入门1——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛...

    数论入门1 一个菜鸡对数论的一点点理解... 莫比乌斯函数 定义函数$\mu(n)$为: 当n有平方因子时,$\mu(n)=0$. 当n没有平方因子时,$\mu(n)=(-1)^{\omega(n)} ...

  8. 【ACM】kuangbin基础数论专题

    知识补充:裴蜀定理 1.Bi-shoe and Phi-shoe 1.题意 给出一行数,求对应的数的欧拉函数值大于给出的数的数的最小和. 2.思路 我们知道素数表的欧拉函数值递增. 设素数a,b,b是 ...

  9. 数论[计算机数学专题(5)]

    哒哒哒!掌握一种心理学的学习概念,人的认知是不断成长的,不必要因为一时的失意,而否定您. 数学不好,也没关系,一起成长.早在出生起,我们每天笨拙的咿呀咿呀学汉语与走路,我们最终都学会了.为什么,因为那 ...

最新文章

  1. 汉字书写解码_《汉字解码学》   第一部分
  2. 永洪Desktop交叉表怎么按月份汇总
  3. AF_UNIX和AF_INET
  4. grunt -- javascript自动化工具
  5. 提高vivado的编译速度
  6. php中的oop,在现有PHP中加入OOP
  7. OPPO Reno 2正式发布:主打4800万变焦四摄 售价2999元
  8. linux中字体的安装以及Terminal字体重叠问题解决
  9. 香港科技大学TensorFlow速成(1)
  10. python编写linux巡检脚本_python结合shell脚本实现简单的日常集中巡检
  11. java图片滑动_java图片滑动验证(登录验证)原理与实现方法详解
  12. 西部陆海新通道海铁联运通达中国六省市
  13. OCR论文阅读笔记01--multi-oriented scence text detection via corner localization and regin segmentation
  14. 92款超级漂亮的css按钮样式 复制即用
  15. PBR之基于图像的光照IBL (Diffuse)
  16. 欧文计算机科学排名,2020年加州大学欧文分校排名TFE Times美国最佳计算机科学硕士专业排名第36...
  17. vmware linux访问windowsxp下的文件
  18. 查看php安装路劲,如何查看php安装位置
  19. 手撕红黑树——C++高阶数据结构详解
  20. LCD液晶显示屏闪屏问题解析

热门文章

  1. 中科大计算机是一流学科吗,安徽2017双一流学科排行榜:中国科技大学第一
  2. java context.write_Channel.write() 和 ChannelHandlerContext.write() 的区别
  3. python数据字符_python数据清洗系列之字符串处理详解
  4. python插入排序_python 插入排序,选择排序
  5. python豆瓣历史评分_Python实战-爬取豆瓣top250评分高于指定值的电影信息
  6. python常用函数和操作_python一条语句分析几个常用函数和概念 -
  7. thinkpad笔记本散热风扇_十代酷睿笔记本低至2999元 你可以入手了_笔记本新闻
  8. 深圳店匠笔试题-4.01
  9. C++ 学习之旅(4)——调试Debug
  10. h5应用 vue 钉钉_uniapp开发一个小视频应用(一)