http://www.lydsy.com/JudgeOnline/problem.php?id=3994

https://www.luogu.org/problemnew/show/P3327#sub

参考:https://blog.csdn.net/zmoiynlp/article/details/45176129

(他的公式好像最后一点有些问题)

请先锻炼好抗打击能力再做这道题,可以看我的模板:数论函数 & 莫比乌斯反演

我们有\(d(ij)=\sum_{k|i}\sum_{l|j}[gcd(k,l)==1]\)

(感性证明很简单,于是就不证了)

(这个是本题第一难的地方,信息数学竞赛)

\(\sum_{i=1}^n\sum_{j=1}^md(ij)\)

\(=\sum_{i=1}^n\sum_{j=1}^m\sum_{k|i}\sum_{l|j}[gcd(k,l)=1]\)

\(=\sum_{k=1}^n\sum_{l=1}^m\lfloor\frac{n}{k}\rfloor\lfloor\frac{m}{l}\rfloor[gcd(k,l)=1]\)(跳了步,希望大家看得懂)

\(=\)套路(实则是跳步)

\(=\sum_{d=1}^{min(n,m)}\mu(d)\sum_{k=1}^{n}\sum_{l=1}^{m}\lfloor\frac{n}{k}\rfloor\lfloor\frac{m}{l}\rfloor[k|d][l|d]\)

\(=\sum_{d=1}^{min(n,m)}\mu(d)\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{l=1}^{\lfloor\frac{m}{d}\rfloor}\lfloor\frac{n}
{kd}\rfloor\lfloor\frac{m}{ld}\rfloor\)

我们令\(g(n)=\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor\)

我们的套路有\(\sum_{i=1}^n\sum_{j=1}^n[i|j]=g(n)\)

是的你没有看错这玩意就是约数函数的前缀和。

(如果你还没看出来的话,把两个sigma颠倒一下)

(这是本题第二难的地方,信息数学竞赛)

于是预处理约数函数的前缀和。

(用到了算数基本定理的推导和约数函数是积性函数的性质,可见https://blog.csdn.net/ControlBear/article/details/77527115

(emmm……就算你全推出来了,这个不会也白搭,信息数学竞赛)

(我为什么要去作死做信息数学竞赛题啊!)

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=5e4+5;
inline int read(){int x;scanf("%d",&x);return x;}
ll su[N],miu[N],d[N],c[N];
int he[N];
void init(int n){
int tot=0;
miu[1]=d[1]=c[1]=1;
for(int i=2;i<=n;i++){
if(!he[i]){
su[++tot]=i;
miu[i]=-1;
c[i]=1;d[i]=2;
}
for(int j=1;j<=tot;j++){
if(i*su[j]>n)break;
he[i*su[j]]=1;
if(i%su[j]==0){
miu[i*su[j]]=0;
d[i*su[j]]=d[i]/(c[i]+1)*(c[i]+2);
c[i*su[j]]=c[i]+1;
break;
}else{
miu[i*su[j]]=miu[i]*miu[su[j]];
d[i*su[j]]=d[i]*d[su[j]];
c[i*su[j]]=1;
}
}
}
for(int i=1;i<=n;i++){
miu[i]+=miu[i-1];
d[i]+=d[i-1];
}
}
int main(){
init(5e4);
int t=read();
while(t--){
ll n=read(),m=read();
ll ans=0;
for(ll i=1,j;i<=min(n,m);i=j+1){
j=min(n/(n/i),m/(m/i));
ans+=(miu[j]-miu[i-1])*d[n/i]*d[m/i];
}
printf("%lld\n",ans);
}
return 0;
}

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

BZOJ3994:[SDOI2015]约数个数和——题解的更多相关文章

  1. P3327/bzoj3994 [SDOI2015]约数个数和(莫比乌斯反演)

    P3327 [SDOI2015]约数个数和 神犇题解(转) 无话可补 #include<iostream> #include<cstdio> #include<cstri ...

  2. BZOJ3994: [SDOI2015]约数个数和

    Description  设d(x)为x的约数个数,给定N.M,求     Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M.   O ...

  3. bzoj千题计划203:bzoj3994: [SDOI2015]约数个数和

    http://www.lydsy.com/JudgeOnline/problem.php?id=3994 设d(x)为x的约数个数,给定N.M,求 用到的一个结论: 证明: 枚举n的约数i,枚举m的约 ...

  4. BZOJ3994: [SDOI2015]约数个数和(莫比乌斯反演)

    Description  设d(x)为x的约数个数,给定N.M,求     Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. Out ...

  5. bzoj3994: [SDOI2015]约数个数和(反演+结论?!)

    这题做的历程堪称惊心动魄 刚刚学了莫比乌斯反演的我高高兴兴的和cbx一起反演式子 期间有突破,有停滞,有否定 然后苟蒻的我背着cbx偷偷打开了题解 看到了 我...... 去你的有个性质啊(当然还是自 ...

  6. [bzoj3994][SDOI2015]约数个数和-数论

    Brief Description 计算\(\sum_{i\leqslant n}\sum_{j\leqslant m}\sigma_0(ij)\). Algorithm Design 首先证明一个结 ...

  7. 【BZOJ3994】[SDOI2015]约数个数和 莫比乌斯反演

    [BZOJ3994][SDOI2015]约数个数和 Description  设d(x)为x的约数个数,给定N.M,求   Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组 ...

  8. 【BZOJ3994】约数个数和(莫比乌斯反演)

    [BZOJ3994]约数个数和(莫比乌斯反演) 题面 求\[\sum_{i=1}^n\sum_{j=1}^md(ij)\] 多组数据\((<=50000组)\) \(n,m<=50000\ ...

  9. 【BZOJ 3994】3994: [SDOI2015]约数个数和(莫比乌斯反演)

    3994: [SDOI2015]约数个数和 Description  设d(x)为x的约数个数,给定N.M,求   Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接 ...

随机推荐

  1. pg 与 oracle 比较

    所谓动态引擎,就是说比如有很多张表的Join,原始的做法是一开始就生成好这个执行计划,随后执行,但实际上很多表Join的时候,你一开始生成的那个执行计划很有可能是不对的. 那么动态执行计划就是指它可以 ...

  2. NSNull Crash处理 (NullSafe 的原理)

    问题场景 后端返回的数据中总会出现一些NSNull类型,当我们一处理程序就会崩溃,因此想到把返回的数据中的NSNull类型全部转换成@""空字符串 (1)原始的json串:后端返回 ...

  3. unity share current game screen

    using UnityEngine; using System.Collections; using UnityEngine.UI; using System.IO; public class Tak ...

  4. 博客更换至 www.zhaoch.top

    博客更换至 www.zhaoch.top 随手拷了一些链接 http://www.zhaoch.top/操作系统/linux/常用命令备忘.html http://www.zhaoch.top/操作系 ...

  5. Firefox-css-hack

    先记下:之后研究.试了一下,新版本FF-32.0效果不错,低版本还没测试. @-moz-document url-prefix() { .container { ... }}

  6. javaee Listener

    Servlet API 中定义了几种监听器,大多数尽管不是全部,都将监听某种形式的会话活动,通过实现对应事件的监听器接口订阅某个事件,然后在部署描述符中添加 <listener> 配置,或 ...

  7. location 匹配规则 (NGINX)

    转:https://moonbingbing.gitbooks.io/openresty-best-practices/ngx/nginx_local_pcre.html location 匹配规则 ...

  8. Bower 显示‘bower ESUDO Cannot be run with sudo’的错误解决方法

    使用 sudo 命令后或者当前用户为 root,执行 bower 相关命令会出现错误: 解决办法: 在命令后面加 --allow-root 例: bower init  --allow-root bo ...

  9. PHPCMS v9表单向导中怎么加入验证码

    表单想到比较简单,所以没有加入验证码的功能.网上的类似教程又大多数不准确.所以亲自测试了一下,发现下面的方法是可用的.希望对有需求的朋友们有所帮助. 1.首先是调用表单的页面加入验证码.表单js调用模 ...

  10. 百度编辑器ueditor的图片地址修正

    我用的百度编辑器为1.4.2的,相对于现在这个时间来说是比较新的.之前去的1.3版的,后来更新到1.4之后出现路径问题.因为今天晚上出现特别奇怪的问题,所以特地又整了一遍,发现这玩意还是得自己弄通了好 ...