bzoj千题计划203:bzoj3994: [SDOI2015]约数个数和
http://www.lydsy.com/JudgeOnline/problem.php?id=3994
设d(x)为x的约数个数,给定N、M,求
用到的一个结论:
证明:
枚举n的约数i,枚举m的约数j
那么i*j一定是n*m的约数
d(nm)相当于不同的i*j 的个数
若i, j 不互质
设gcd(i,j)= g , 则 i= p*g ,j=q*g
那么i*j 可以 组成两个互质数p*g*g 和 q 的乘积
p*g*g 和 q 也都输n和m的约数
即p*g*g 和 q 也都是合法的i,j
所以 互质数i和j的乘积组成了n*m的所有的约数
上式得证
回到这个题
令N<=M
化为
改变枚举顺序,先枚举i,j
当n=[1,N]中所有i的倍数时,i会取n/i次
即i会取 次 ( 里面有除号的[]表示下取整,下面一样)
j 同理
所以 上式化为
=
=
改变枚举顺序,先枚举d
令
则
ans=
f(x) 可以 用除法分块 提前 N*sqrt(N)处理好
预处理 μ 的前缀和
最后的式子 也可以用除法分块 在sqrt(N)时间内计算出
#include<cstdio> #include<iostream> #include<algorithm>using namespace std;#define N 50001typedef long long LL;int prime[N]; bool vis[N]; int miu[N],sum[N];LL f[N];void read(int &x) {x=0; char c=getchar();while(!isdigit(c)) c=getchar();while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); } }void premiu() {int cnt=0;miu[1]=1;for(int i=2;i<N;++i){if(!vis[i]){prime[++cnt]=i;miu[i]=-1;}for(int j=1;j<=cnt;++j){if(prime[j]*i>=N) break;vis[i*prime[j]]=true;if(i%prime[j]==0) break;miu[i*prime[j]]=-miu[i];}}for(int i=1;i<N;++i) sum[i]+=sum[i-1]+miu[i]; }LL pref(int x) {LL tot=0;int j;for(int i=1;i<=x;i=j+1){j=x/(x/i);tot+=(LL)(j-i+1)*(x/i);}return tot; }int main() {premiu();for(int i=1;i<N;++i) f[i]=pref(i);int T,n,m,j;LL ans; read(T);while(T--){ans=0;read(n); read(m);if(n>m) swap(n,m);for(int i=1;i<=n;i=j+1){j=min(n/(n/i),m/(m/i));ans+=f[n/i]*f[m/i]*(sum[j]-sum[i-1]);} cout<<ans<<'\n';} }
转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8228465.html
bzoj千题计划203:bzoj3994: [SDOI2015]约数个数和相关推荐
- [BZOJ3994][SDOI2015]约数个数和
3994: [SDOI2015]约数个数和 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 1104 Solved: 762 [Submit][St ...
- [bzoj3994] [SDOI2015]约数个数和
Description 设d(x)为x的约数个数,给定N.M,求 \(\sum_{i=1}^N\sum_{j=1}^Md(ij)\) Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测 ...
- BZOJ 2150. 部落战争(最小路径覆盖问题)【BZOJ千题计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 刷题就图一乐 题目链接 https://hydro.ac/d/bzoj/p/2150 是 hydro ...
- BZOJ 2151 种树(可反悔贪心,链表)【BZOJ千题计划】就图一乐
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2151 是 hydro 的 BZOJ ...
- BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...
- bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼
http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...
- bzoj千题计划207:bzoj1879: [Sdoi2009]Bill的挑战
http://www.lydsy.com/JudgeOnline/problem.php?id=1879 f[i][j] 表示匹配了i个字符,匹配字符串的状态为j的方案数 枚举下一个字符是什么 计算加 ...
- bzoj千题计划127:bzoj1041: [HAOI2008]圆上的整点
http://www.lydsy.com/JudgeOnline/problem.php?id=1041 设 X>0 ,Y>0 X^2 + Y^2 = R^2 X^2 = R^2-Y^2 ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
最新文章
- Go 代码中如何绑定 Host
- debian 下配置common lisp环境
- 邮件服务器“单点登录”功能
- thinkpad卡在logo界面_四大系列 一个品牌,超好用的商务伴侣Thinkpad
- Linux学习 命令部分
- 基于Servlet的MVC模式用户登录实例
- Python风格总结:翻转列表、数组
- Axure高保真家政服务用户端app全局说明+家政服务员工移动端app+家政服务web端管理信息系统(订单管理+服务管理+报表统计+财务管理+营销管理+人员管理)
- python读音翻译-Python翻译器
- 使用异步存储提升 Web 应用程序的离线体验
- MVC模式中编写一个登录的Servlet
- OBS-Linux直播神器(录屏神器)
- 电脑加域、exchange邮箱设置、绑定打印机
- C语言洛谷P1957口算练习题
- 没有一个绝对安全的系统 (二) 破解路由器后台密码
- mysql中str_to_date函数和date_format函数和now函数
- My Neighbor Alice新一轮土地销售分析
- UTC和东八区时间转换(python)
- 华硕 PRIME Z490-PLUS+i7-10700K黑苹果EFI引导文件
- android源码编译并刷入nexus 6p手机