【数论】数表(P3312)
正题
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∑nj=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∑nj=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/dj=1∑m/dc∣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)相关推荐
- 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 ...
- (每日一题)P3312 [SDOI2014]数表(经典莫比乌斯反演 + 树状数组维护离线询问)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.11 莫反 P3312 [SDOI2 ...
- 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 算法之基础数论应用篇(一)
基础数论应用篇 子集和 题目描述 筛质数 筛质数模板 欧拉筛 线性筛 哥德巴赫猜想 夏洛克和他的女朋友 二次筛法 分解质因数 试除法分解质因数 分解阶乘质因子 快速幂 模板 快速幂 快速乘法 序列的第 ...
- 「BZOJ 3529」「SDOI 2014」数表「莫比乌斯反演」
题意 有一张 \(n\times m\) 的数表,其第\(i\)行第\(j\)列的数值为能同时整除\(i\)和\(j\)的所有自然数之和. \(T\)组数据,询问对于给定的 \(n,m,a\) , 计 ...
- [原创]数论个人模板
作为一个ACMer不可能没有自己的模板,并不是别人的模板你都能看的懂,所以有自己的模板很重要,下面是我自己一边培训一边整的数论模板,内容很少都是一些数论基础模板(毕竟不是大牛),但是此博客会一直更新的 ...
- matlab狄利克雷函数,数论入门1——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛...
数论入门1 一个菜鸡对数论的一点点理解... 莫比乌斯函数 定义函数$\mu(n)$为: 当n有平方因子时,$\mu(n)=0$. 当n没有平方因子时,$\mu(n)=(-1)^{\omega(n)} ...
- 【ACM】kuangbin基础数论专题
知识补充:裴蜀定理 1.Bi-shoe and Phi-shoe 1.题意 给出一行数,求对应的数的欧拉函数值大于给出的数的数的最小和. 2.思路 我们知道素数表的欧拉函数值递增. 设素数a,b,b是 ...
- 数论[计算机数学专题(5)]
哒哒哒!掌握一种心理学的学习概念,人的认知是不断成长的,不必要因为一时的失意,而否定您. 数学不好,也没关系,一起成长.早在出生起,我们每天笨拙的咿呀咿呀学汉语与走路,我们最终都学会了.为什么,因为那 ...
最新文章
- 汉字书写解码_《汉字解码学》 第一部分
- 永洪Desktop交叉表怎么按月份汇总
- AF_UNIX和AF_INET
- grunt -- javascript自动化工具
- 提高vivado的编译速度
- php中的oop,在现有PHP中加入OOP
- OPPO Reno 2正式发布:主打4800万变焦四摄 售价2999元
- linux中字体的安装以及Terminal字体重叠问题解决
- 香港科技大学TensorFlow速成(1)
- python编写linux巡检脚本_python结合shell脚本实现简单的日常集中巡检
- java图片滑动_java图片滑动验证(登录验证)原理与实现方法详解
- 西部陆海新通道海铁联运通达中国六省市
- OCR论文阅读笔记01--multi-oriented scence text detection via corner localization and regin segmentation
- 92款超级漂亮的css按钮样式 复制即用
- PBR之基于图像的光照IBL (Diffuse)
- 欧文计算机科学排名,2020年加州大学欧文分校排名TFE Times美国最佳计算机科学硕士专业排名第36...
- vmware linux访问windowsxp下的文件
- 查看php安装路劲,如何查看php安装位置
- 手撕红黑树——C++高阶数据结构详解
- LCD液晶显示屏闪屏问题解析
热门文章
- 中科大计算机是一流学科吗,安徽2017双一流学科排行榜:中国科技大学第一
- java context.write_Channel.write() 和 ChannelHandlerContext.write() 的区别
- python数据字符_python数据清洗系列之字符串处理详解
- python插入排序_python 插入排序,选择排序
- python豆瓣历史评分_Python实战-爬取豆瓣top250评分高于指定值的电影信息
- python常用函数和操作_python一条语句分析几个常用函数和概念 -
- thinkpad笔记本散热风扇_十代酷睿笔记本低至2999元 你可以入手了_笔记本新闻
- 深圳店匠笔试题-4.01
- C++ 学习之旅(4)——调试Debug
- h5应用 vue 钉钉_uniapp开发一个小视频应用(一)