bzoj 3994 [SDOI2015]约数个数和——反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3994
\( d(i*j)=\sum\limits_{x|i}\sum\limits_{y|j}e(gcd(\frac{i}{x},y)==1) \)
即把 i*j 的约数质因数分解后,把质因数尽量放在 x 那里,以防重复。
\( ans = \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\sum\limits_{x|i}\sum\limits_{y|j}e(gcd(\frac{i}{x},y)==1) \)
\( = \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\sum\limits_{x|i}\sum\limits_{y|j}\sum\limits_{d|x , d|y}\mu(d) \)
注意这里不要把 d 提前,要把 x , y 提前。
\( = \sum\limits_{x=1}^{n}\sum\limits_{y=1}^{m}\left\lfloor \frac{n}{x} \right\rfloor \left\lfloor \frac{m}{y} \right\rfloor \sum\limits_{d|x , d|y}\mu(d) \)
\( = \sum\limits_{d=1}^{n}\mu(d)\sum\limits_{i=1}^{\frac{n}{d}}\sum\limits_{j=1}^{\frac{m}{d}}\left\lfloor \frac{n}{i*d} \right\rfloor \left\lfloor \frac{m}{j*d} \right\rfloor \)
这时要发现右边的求和边界与值的一些共同点。
\( = \sum\limits_{d=1}^{n}\mu(d)\sum\limits_{i=1}^{\frac{n}{d}}\left\lfloor \frac{\left\lfloor\frac{n}{d}\right\rfloor}{i} \right\rfloor\sum\limits_{j=1}^{\frac{m}{d}} \left\lfloor \frac{\left\lfloor\frac{m}{d}\right\rfloor}{j} \right\rfloor \)
令 \( g(i) = \sum\limits_{j=1}^{i}\left\lfloor\frac{i}{j}\right\rfloor \) ,则 g 可以 \( n\sqrt{n} \) 预处理。剩下的就是数论分块了。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=5e4+;
int u[N],s[N],pri[N];bool vis[N];ll g[N];
void init()
{
int lm=5e4,cnt=;
for(int t=;t<=lm;t++)
for(int i=,j;i<=t;i=j+)
{
int d=t/i; j=t/d;
g[t]+=(ll)d*(j-i+);
}
u[]=s[]=;
for(int i=;i<=lm;i++)
{
if(!vis[i])pri[++cnt]=i,u[i]=-;
for(int j=;j<=cnt&&(ll)i*pri[j]<=lm;j++)
{
vis[i*pri[j]]=;
if(i%pri[j]==){u[i*pri[j]]=;break;}
u[i*pri[j]]=-u[i];
}
s[i]=s[i-]+u[i];
}
}
int main()
{
int T,n,m;scanf("%d",&T); init();
while(T--)
{
scanf("%d%d",&n,&m);if(n>m)swap(n,m);
ll ans=;
for(int i=,j;i<=n;i=j+)
{
int d0=n/i,d1=m/i; j=min(n/d0,m/d1);
ans+=(ll)(s[j]-s[i-])*g[d0]*g[d1];
}
printf("%lld\n",ans);
}
return ;
}
bzoj 3994 [SDOI2015]约数个数和——反演的更多相关文章
- BZOJ 3994: [SDOI2015]约数个数和
3994: [SDOI2015]约数个数和 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 898 Solved: 619[Submit][Statu ...
- BZOJ 3994: [SDOI2015]约数个数和 [莫比乌斯反演 转化]
2015 题意:\(d(i)\)为i的约数个数,求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m d(ij)\) \(ij\)都爆int了.... 一开始想容斥一下 ...
- 【刷题】BZOJ 3994 [SDOI2015]约数个数和
Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. Output T ...
- BZOJ 3994: [SDOI2015]约数个数和3994: [SDOI2015]约数个数和 莫比乌斯反演
https://www.lydsy.com/JudgeOnline/problem.php?id=3994 https://blog.csdn.net/qq_36808030/article/deta ...
- BZOJ.3994.[SDOI2015]约数个数和(莫比乌斯反演)
题目链接 \(Description\) 求\[\sum_{i=1}^n\sum_{j=1}^md(ij)\] \(Solution\) 有结论:\[d(nm)=\sum_{i|d}\sum_{j|d ...
- ●BZOJ 3994 [SDOI2015]约数个数和
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3994 题解: 莫比乌斯反演 (先定义这样一个符号[x],如果x为true,则[x]=1,否则 ...
- 【BZOJ 3994】3994: [SDOI2015]约数个数和(莫比乌斯反演)
3994: [SDOI2015]约数个数和 Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接 ...
- [BZOI 3994] [SDOI2015]约数个数和(莫比乌斯反演+数论分块)
[BZOI 3994] [SDOI2015]约数个数和 题面 设d(x)为x的约数个数,给定N.M,求\(\sum _{i=1}^n \sum_{i=1}^m d(i \times j)\) T组询问 ...
- 【BZOJ】3994: [SDOI2015]约数个数和
题意: \(T(1 \le T \le 50000)\)次询问,每次给出\(n, m(1 \le n, m \le 50000)\),求\(\sum_{i=1}^{n} \sum_{j=1}^{m} ...
随机推荐
- Neutron三层网络服务实现原理
Neutron 对虚拟三层网络的实现是通过其 L3 Agent (neutron-l3-agent).该 Agent 利用 Linux IP 栈.route 和 iptables 来实现内网内不同网络 ...
- js排序算法06——希尔排序
希尔排序本质是一种插入排序,由一位叫希尔的大神提出得名,其基本思想是将数组分组进行插入排序,每次消除不止一个逆序对,这样就提高了插入排序的效率.最后一步进行一间隔的插入排序,此时数组已经基本有序.代码 ...
- hdu 6040 Hints of sd0061(stl: nth_element(arr,arr+k,arr+n))
Hints of sd0061 Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others ...
- canvas 画布 文字描边
总结一下,canvas 画布 文字描边的2种方法以及其不同的视觉效果: 效果图: 具体代码: <canvas id="canvas" width="800" ...
- json 解析double类型多出几位小数,利用NSDecimalNumber修复 , 服务器返回的数据,用数据类型接收(int,NSNumber)?
后台返回float类型数据8.2,实际用AFN的json解析后得到8.1999999999,该怎么处理呢? 开发中处理处理价格金额问题, 后台经常返回float.double类型, 打印或转成NSS ...
- jQuery 选项卡 CleverTabs
CleverTabs是一款jQuery插件,所需jQuery版本:1.6.1,jQuery UI样式版本:1.8.13:其功能为创建jQuery UI风格的Tab用于显示iframe. 本示例中符加了 ...
- Slice Header中的field_pic_flag的含义?
编码模式指帧编码.场编码.帧场自适应编码.当这个句法元素取值为1时属于场编码:0为非场编码. 序列参数集中的句法元素frame_mbs_only_flag和mb_adaptive_frame_fiel ...
- flowable FormEngine和FormEngineConfiguration
FormEngineConfiguration 继承自 AbstractEngineConfiguration. 一.获得实例 FormEngineConfiguration提供了7个公开的静态方法: ...
- Swift 无操作时自动登出
main.swift中代码: import Foundation import UIKit UIApplicationMain( CommandLine.argc, UnsafeMutableRawP ...
- angularjs 定时器 销毁
angular.module('app', []) .controller('ItemController', function($scope, $interval) { // store the i ...