题意

首先有个结论:

\(d(i,j)=\sum\limits_{x|i}\sum\limits_{y|j}[gcd(x,y)=1]\)

证明:

假设\(i=p_1^{a_1}*p_2^{a_2}*...*p_k^{a_k},j=p_1^{b_1}*p_2^{b_2}*...*p_k^{b_k}\),则\(i*j=p_1^{a_1+b_1}*p_2^{a_2+b_2}*...*p_k^{a_k+b_k}\)

考虑第\(i\)个质因子\(p_i\),如果\(x,y\)互质,则\(x,y\)只能有一个有\(p_i\),x有是\(a_i\)种,\(y\)有是\(b_i\)种,都没有是1种,总共\((a_i+b_i+1)\)种,与约数个数和公式中相符。

于是式子变为:

\(\sum\limits_{i=1}^n\sum\limits_{j=1}^{m}\sum\limits_{x|i}\sum\limits_{y|j}[\gcd(x,y)=1]\)

改为枚举\(x,y\):

\(\sum\limits_{x=1}^{n}\sum\limits_{y=1}^m[\gcd(x,y)=1]*\frac{n}{x}*\frac{m}{y}\)

设\(f(x)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^m\frac{n}{i}*\frac{m}{j}*[\gcd(i,j)=x],F(x)=\sum\limits_{n|d}f(d)\)

则:

\(F(x)=\sum\limits_{i=1}^n\sum\limits_{j=1}^m\frac{n}{i}*\frac{m}{j}*[x|\gcd(i,j)]\)

提出\(x\):

\(F(x)=\sum\limits_{i=1}^{\frac{n}{x}}\sum\limits_{j=1}^{\frac{m}{x}}\frac{n}{i*x}*\frac{m}{j*x}*[1|\gcd(i,j)]\)

即:

\(F(x)=\sum\limits_{i=1}^{\frac{n}{x}}\sum\limits_{j=1}^{\frac{m}{x}}\frac{n}{i*x}*\frac{m}{j*x}\)

莫比乌斯反演:

\(f(x)=\sum\limits_{x|d}\mu(\frac{d}{x})F(x)\)

\(ans=f(1)=\sum\limits_{1|d}\mu(\frac{d}{1})F(d)\)

\(=\sum\limits_{d=1}^{min(n,m)}\mu(d)\sum\limits_{i=1}^{\frac{n}{d}}\sum\limits_{j=1}^{\frac{m}{d}}\frac{n}{i*d}*\frac{m}{j*d}\)

预处理\(g(x)=\sum\limits_{i=1}^{x}\frac{x}{i}\),并求出莫比乌斯函数的前缀和\(sum_i\),后面那一部分显然可以除法分块。

code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=5*1e4+10;
int T,n,m;
int mu[maxn],sum[maxn];
ll g[maxn];
bool vis[maxn];
vector<int>prime;
inline void shai(int n)
{
vis[1]=1;mu[1]=1;
for(int i=2;i<=n;i++)
{
if(!vis[i])prime.push_back(i),mu[i]=-1;
for(unsigned int j=0;j<prime.size()&&i*prime[j]<=n;j++)
{
vis[i*prime[j]]=1;
if(i%prime[j]==0)break;
mu[i*prime[j]]=-mu[i];
}
}
for(int i=1;i<=n;i++)sum[i]=sum[i-1]+mu[i];
for(int i=1;i<=n;i++)
for(int l=1,r;l<=i;l=r+1)
r=i/(i/l),g[i]+=1ll*(r-l+1)*(i/l);
}
inline ll solve(int n,int m)
{
ll res=0;
for(int l=1,r;l<=min(n,m);l=r+1)
{
r=min(n/(n/l),m/(m/l));
res+=1ll*(sum[r]-sum[l-1])*g[n/l]*g[m/l];
}
return res;
}
int main()
{
shai(50000);
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
printf("%lld\n",solve(n,m));
}
return 0;
}

luoguP3327 [SDOI2015]约数个数和的更多相关文章

  1. BZOJ_3994_[SDOI2015]约数个数和_莫比乌斯反演

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

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

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

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

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

  4. 洛谷 [SDOI2015]约数个数和 解题报告

    [SDOI2015]约数个数和 题目描述 设\(d(x)\)为\(x\)的约数个数,给定\(N,M\),求$ \sum\limits^N_{i=1}\sum\limits^M_{j=1}d(ij)$ ...

  5. BZOJ 3994: [SDOI2015]约数个数和

    3994: [SDOI2015]约数个数和 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 898  Solved: 619[Submit][Statu ...

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

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

  7. 洛谷P3327 - [SDOI2015]约数个数和

    Portal Description 共\(T(T\leq5\times10^4)\)组数据.给出\(n,m(n,m\leq5\times10^4)\),求\[\sum_{i=1}^n\sum_{j= ...

  8. P3327 [SDOI2015]约数个数和 莫比乌斯反演

    P3327 [SDOI2015]约数个数和 莫比乌斯反演 链接 luogu 思路 第一个式子我也不会,luogu有个证明,自己感悟吧. \[d(ij)=\sum\limits_{x|i}\sum\li ...

  9. [BZOI 3994] [SDOI2015]约数个数和(莫比乌斯反演+数论分块)

    [BZOI 3994] [SDOI2015]约数个数和 题面 设d(x)为x的约数个数,给定N.M,求\(\sum _{i=1}^n \sum_{i=1}^m d(i \times j)\) T组询问 ...

随机推荐

  1. Linux高性能服务器编程,书中的 shell 命令

    记录<Linux高性能服务器编程>书里面讲解到的若干 shell 命令 arp 命令查看ARP高速缓存: [root@VM_0_10_centos heliang]# arp -a ? ( ...

  2. MSM8909中LK阶段LCM屏适配与显示流程分析(二)

    1.前言 在前面的文章MSM8909中LK阶段LCM屏适配与显示流程分析(一),链接如下: https://www.cnblogs.com/Cqlismy/p/12019317.html 介绍了如何使 ...

  3. 奥展项目笔记07--vue绑定下拉框和checkbox总结

    1.vue绑定下拉框 <div class="col-md-1 data"> <select class="form-control " v- ...

  4. WPF --TextBox--圆角、水印、带单位

    <SolidColorBrush x:Key="TextBox.Static.Border" Color="#FFABAdB3"/> <Sol ...

  5. Installing on Kubernetes with NATS Operator

    https://github.com/nats-io/nats-operator https://hub.helm.sh/charts/bitnami/nats https://github.com/ ...

  6. 【mybatis】mybatis传参的几种方式

    参考地址: https://my.oschina.net/liuzelin/blog/2966633

  7. DevExpress的TreeList实现节点上添加自定义右键菜单并实现删除节点功能

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  8. (windows)局域网内无法访问FTP服务器的解决方法

    遇见的问题 server windows.client windwos 本来好好的ftp,突然就客户端无法访问了 服务器端可以自己访问ftp 客户端ping的通服务器分析过程 因为公司管理严格,自己无 ...

  9. echarts白色实心环形图(空心饼图)的编写

    // 数据接入机构统计let myDom = document.getElementById('myChart');let myWidth = myDom.offsetWidth - 5; // 获取 ...

  10. 简单记录(css换行带点与不带点)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...