【bzoj3994】[SDOI2015]约数个数和 莫比乌斯反演
题目描述
输入
输入文件包含多组测试数据。
输出
T行,每行一个整数,表示你所求的答案。
样例输入
2
7 4
5 6
样例输出
110
121
题解
莫比乌斯反演
根据 bzoj4176 推出的结论,
那么就有:
预处理mu及其前缀和。
由于要处理多组询问,所以需要用O(n√n)的时间预处理出f,然后对于每组询问分块来求。
#include <cstdio>
#include <algorithm>
#define N 50010
using namespace std;
typedef long long ll;
const int n = 50000;
int mu[N] , sum[N] , prime[N] , tot , f[N];
bool np[N];
ll cal(int a , int b)
{int i , last;ll ans = 0;for(i = 1 ; i <= a && i <= b ; i = last + 1) last = min(a / (a / i) , b / (b / i)) , ans += (ll)(sum[last] - sum[i - 1]) * f[a / i] * f[b / i];return ans;
}
int main()
{int i , j , last , T , a , b;mu[1] = sum[1] = 1;for(i = 2 ; i <= n ; i ++ ){if(!np[i]) mu[i] = -1 , prime[++tot] = i;for(j = 1 ; j <= tot && i * prime[j] <= n ; j ++ ){np[i * prime[j]] = 1;if(i % prime[j] == 0){mu[i * prime[j]] = 0;break;}else mu[i * prime[j]] = -mu[i];}sum[i] = sum[i - 1] + mu[i];}for(i = 1 ; i <= n ; i ++ )for(j = 1 ; j <= i ; j = last + 1)last = i / (i / j) , f[i] += (last - j + 1) * (i / j);scanf("%d" , &T);while(T -- ) scanf("%d%d" , &a , &b) , printf("%lld\n" , cal(a , b));return 0;
}
转载于:https://www.cnblogs.com/GXZlegend/p/7000194.html
【bzoj3994】[SDOI2015]约数个数和 莫比乌斯反演相关推荐
- 【BZOJ3994】[SDOI2015]约数个数和 莫比乌斯反演
[BZOJ3994][SDOI2015]约数个数和 Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数 ...
- BZOJ 3994: [SDOI2015]约数个数和 [莫比乌斯反演 转化]
2015 题意:\(d(i)\)为i的约数个数,求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m d(ij)\) \(ij\)都爆int了.... 一开始想容斥一下 ...
- BZOJ 3994 [SDOI2015]约数个数和 (莫比乌斯反演)
题目大意:略 洛谷传送门 首先要知道这样一个公式不知道这个公式这道题还怎么做... $d(ij)=\sum\limits_{x=1}^{i} \sum\limits_{y=1}^{j}[gcd(x,y ...
- [bzoj3994] [SDOI2015]约数个数和
Description 设d(x)为x的约数个数,给定N.M,求 \(\sum_{i=1}^N\sum_{j=1}^Md(ij)\) Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测 ...
- [BZOJ3994][SDOI2015]约数个数和
3994: [SDOI2015]约数个数和 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 1104 Solved: 762 [Submit][St ...
- P3327 [SDOI2015]约数个数和 (mobius反演)
P3327 [SDOI2015]约数个数和 推导过程 求∑i=1n∑j=1md(ij)\sum_{i = 1} ^{n} \sum_{j = 1} ^{m} d(ij)∑i=1n∑j=1md(ij ...
- bzoj千题计划203:bzoj3994: [SDOI2015]约数个数和
http://www.lydsy.com/JudgeOnline/problem.php?id=3994 设d(x)为x的约数个数,给定N.M,求 用到的一个结论: 证明: 枚举n的约数i,枚举m的约 ...
- [SDOI2015]约数个数和【莫比乌斯反演】
[SDOI2015]约数个数和 题意:\(d(x)\)为\(x\)的约数个数,求\(\sum_{i=1}^n\sum{j=1}^md(ij)\) 由结论得\[ans=\sum_{i=1}^n\sum_ ...
- luogu P3327 [SDOI2015]约数个数和(rng58-clj等式)
luogu P3327 [SDOI2015]约数个数和(rng58-clj等式) 题目大意 设d(x)d(x)d(x)为x的因子的个数,给出N和M求 ∑i=1n∑j=1md(i,j)\sum_{i=1 ...
最新文章
- Delphi调用java开发的WebService,传入参数出错
- 海量大数据处理最新面试题-1
- C++ 中内存分配和回收
- mysqldatareader获取整行数据给datarow_C# sqladapter 与sqldataReader
- 解决开机自检D盘问题
- mybatis简介-什么是Mybatis
- eclipse maven jetty插件方式启动项目
- 基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署
- 在Windows系统中下载并安装Docker-desktop
- Document API
- linux服务器启动过程
- python基础30个常用代码-即学即用的 30 段 Python 实用代码
- linux中jdk添加字体_LINUX下JDK安装字体
- 嵌入式软件开发与互联网软件开发模式差异
- word中如何去掉页眉横线?
- 支付宝和微信支付用户付款码条码规则
- 完全平方数的几种判定方法与算法用时
- CTO、技术总监、首席架构师的区别
- Python使用turtle绘图中设置小乌龟(画笔)旋转的角度turtle.setheading()
- ubuntu16.04 安装微信客户端
热门文章
- R语言blotter包回测实例
- 银行现在都很缺钱吗,为什么给的利息比以前高了?
- 街头抓拍之一:酷似福克纳的老头
- python partition by函数_python – 避免Spark窗口函数中单个分区模式的性能影响
- 婚宴座位图html5,图解现代婚宴座位安排
- matlab中m文件的作用,M文件主要包含()_matlab中m文件的好处
- python list转换成树形结构_python递归查询菜单并转换成json实例
- python与excel互通_【python】python vs Excel ( 与mysql数据库之间的交互)
- android使用桢布局,Android 常用布局
- this关键字+super关键字