约数个数求和+线性筛约数——bzoj3994
这题首先要会线性筛约数个数,并求出前缀和
bool vis[maxn];
int mm,mu[maxn],prime[maxn],num[maxn],sum[maxn],d[maxn],sum1[maxn];
void init(){
mu[]=;num[]=;
for(int i=;i<maxn;i++){
if(!vis[i]){
prime[++mm]=i;
mu[i]=-;
num[i]=;
d[i]=;
}
for(int j=;j<=mm;j++){
if(prime[j]*i>=maxn)break;
vis[i*prime[j]]=;
if(i%prime[j]==){
mu[i*prime[j]]=;
d[i*prime[j]]=d[i]+;
num[i*prime[j]]=num[i]/(d[i]+)*(d[i*prime[j]]+);
break;
}
else {
mu[i*prime[j]]=-mu[i];
d[i*prime[j]]=;
num[i*prime[j]]=num[i]*;
}
}
}
for(int i=;i<maxn;i++)sum[i]=sum[i-]+mu[i];
for(int i=;i<maxn;i++)sum1[i]=sum1[i-]+num[i];
}
然后通过转化 d(i*j) 化简原式即可
#include<bits/stdc++.h>
using namespace std;
#define maxn 500005
#define ll long long bool vis[maxn];
int mm,mu[maxn],prime[maxn],num[maxn],sum[maxn],d[maxn],sum1[maxn];
void init(){
mu[]=;num[]=;
for(int i=;i<maxn;i++){
if(!vis[i]){
prime[++mm]=i;
mu[i]=-;
num[i]=;
d[i]=;
}
for(int j=;j<=mm;j++){
if(prime[j]*i>=maxn)break;
vis[i*prime[j]]=;
if(i%prime[j]==){
mu[i*prime[j]]=;
d[i*prime[j]]=d[i]+;
num[i*prime[j]]=num[i]/(d[i]+)*(d[i*prime[j]]+);
break;
}
else {
mu[i*prime[j]]=-mu[i];
d[i*prime[j]]=;
num[i*prime[j]]=num[i]*;
}
}
}
for(int i=;i<maxn;i++)sum[i]=sum[i-]+mu[i];
for(int i=;i<maxn;i++)sum1[i]=sum1[i-]+num[i];
}
ll n,m; inline ll calc(ll n,ll m){return (ll)sum1[n]*sum1[m];} int main(){
init();
int t;cin>>t;
while(t--){
cin>>n>>m;
if(n>m)swap(n,m);
ll ans=;
for(int l=,r;l<=n;l=r+){
r=min(n/(n/l),m/(m/l));
ans+=(sum[r]-sum[l-])*calc(n/l,m/l);
}
cout<<ans<<'\n';
}
}
约数个数求和+线性筛约数——bzoj3994的更多相关文章
- BZOJ 3994: [SDOI2015]约数个数和3994: [SDOI2015]约数个数和 莫比乌斯反演
https://www.lydsy.com/JudgeOnline/problem.php?id=3994 https://blog.csdn.net/qq_36808030/article/deta ...
- luogu3327 [SDOI2015]约数个数和
link 设\(d(x)\)表示x约数个数,给定n,m,\(\sum_{i=1}^n\sum_{j=1}^md(ij)\) 多组询问,1<=T<=50000,1<=N, M<= ...
- [SDOI2015][bzoj 3994][Luogu P3327] 约数个数和 (莫比乌斯反演)
题目描述 设d(x)d(x)d(x)为xxx的约数个数,给定NNN.MMM,求 ∑i=1N∑j=1Md(ij)\sum^{N}_{i=1}\sum^{M}_{j=1} d(ij)i=1∑Nj=1∑M ...
- 牛客:t次询问,每次给你一个数n,求在[1,n]内约数个数最多的数的约数个数(数论+贪心)
https://ac.nowcoder.com/acm/contest/907/B t次询问,每次给你一个数n,求在[1,n]内约数个数最多的数的约数个数 分析: 根据约数和定理:对于一个大于1正整数 ...
- SIEVE 线性筛
今天来玩玩筛 英文:Sieve 有什么筛? 这里介绍:素数筛,欧拉筛,约数个数筛,约数和筛 为什么要用筛? 顾名思义,筛就是要漏掉没用的,留下有用的.最终筛出来1~n的数的一些信息. 为什么要用线性筛 ...
- 【数论】【莫比乌斯反演】【线性筛】hdu6134 Battlestation Operational
看这个题解吧:http://blog.csdn.net/wubaizhe/article/details/77338332 代码里顺便把几个常用的线性筛附上了. Key:1.gcd(i,j)==1利用 ...
- BZOJ5323 JXOI2018游戏(线性筛+组合数学)
可以发现这个过程非常类似埃氏筛,将在该区间内没有约数的数定义为质数,那么也就是求每种方案中选完所有质数的最早时间之和. 于是先求出上述定义中的质数个数,线性筛即可.然后对每个最短时间求方案数,非常显然 ...
- 积性函数&线性筛&欧拉函数&莫比乌斯函数&因数个数&约数个数和
只会搬运YL巨巨的博客 积性函数 定义 积性函数:对于任意互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数. 完全积性函数:对于任意整数a和b有性质f(ab)=f(a)f(b)的数论函数 ...
- 【线性筛】【质因数分解】【约数个数定理】hdu6069 Counting Divisors
d(x)表示x的约数个数,让你求(l,r<=10^12,r-l<=10^6,k<=10^7) #include<cstdio> using namespace std; ...
随机推荐
- Vue 一些零零散散~
1. F5刷新不会触发vue的destroyed事件. 2. computed 的 vuex 数据 ------> beforeCreated: undefined / creat ...
- 基于Docker构建Jenkins CI平台
1.部署gitlab 1.1 部署gitlab docker run -d \ --name gitlab \ -p 8443:443 \ -p 9999:80 \ -p 9998:22 \ -v $ ...
- k8s集群搭建之一:基础环境
一按照kubernetes对软件和硬件的要求: 二准备的主机系统以及ip配置 角色 系统 IP k8s-master centos7.4 192.168.137.66 k8s-node1 centos ...
- MapFields和并行计算(OpenFOAM)
这几天研究了一下OpenFOAM里的MapFields和并行计算,总结一下. Case 1 先进行并行计算 SetFields 初始化流场 decomposePar 把初始化好的流场分块 mpirun ...
- 基于V8的JsonMapper
<dependency> <groupId>com.eclipsesource.j2v8</groupId> <artifactId>j2v8_win3 ...
- 由Resin引发的java.lang.IllegalArgumentException: object is not an instance of declaring class(反射中使用)思考
文章目录 背景 原因 解决办法 背景 在java agent中抓取Resin的 某些方法,在invoke的时候出现错误 java.lang.IllegalArgumentException: obje ...
- msgbox用法
http://www.w3school.com.cn/vbscript/func_msgbox.asp VBScript MsgBox 函数 VBScript 函数参考手册 定义和用法 MsgBox ...
- LeetCode 最小栈
题目链接:https://leetcode-cn.com/problems/min-stack/ 题目大意 略.并且题目中要求的操作都要 O(1) 实现. 分析 用 2 个栈,一个普通栈,一个单调栈. ...
- UVA 1525 Falling Leaves
题目链接:https://vjudge.net/problem/UVA-1525 题目链接:https://vjudge.net/problem/POJ-1577 题目大意 略. 分析 建树,然后先序 ...
- Django框架(一)—— 安装使用Django
目录 Django入门 一.web应用 二.C/S 和B/S 架构 三.python中的web框架 四.http协议 五.URL简介 六.Django的安装和使用 Django入门 一.web应用 W ...