题意:求\(1\leq i \leq N,1\leq j \leq M,gcd(i,j)\)的质因子个于等于p的对数。

分析:加上了对质因子个数的限制。

设\(f(d):[gcd(i,j)=d]\) , \(F(d):[d|gcd(i,j)]\) ,k是满足质因子<=p的数。

则\(ans = \sum_{k}f(k) = \sum_{k}\sum_{k|d}u(\frac{d}{k})\lfloor \frac{N}{d}\rfloor \lfloor\frac{M}{d}\rfloor = \sum_{d}\lfloor \frac{N}{d}\rfloor \lfloor\frac{M}{d}\rfloor\sum_{k|d}u(\frac{d}{k})\)

\(\sum_{k|d}u(\frac{d}{k})\)可以预处理得到。

由于限制了质因子的个数,并且我们还想用分块的方法求出最后答案,于是设\(sum(a,b):\sum_{i=1}^{a}\sum_{k|i且k质因子个数\leq j}u(\frac{i}{k})\)。在打出莫比乌斯函数表后,可以在预处理出\(sum(a,b)表\),由于1e6以内的数质因子个数不会超过20,因此第二维开到20即可。

那么计算结果时可以分块加速求出ans的值。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=5e5+5;
bool vis[maxn];
int prime[maxn],mu[maxn];
int sum[maxn][20];
int pricnt[maxn];
void init(){
memset(vis,false,sizeof(vis));
mu[1] = 1;
prime[0] = 0;
int cnt=0;
for(int i=2;i<maxn;++i){
if(!vis[i]){
mu[i] = -1;
pricnt[i] = 1;
prime[++cnt] = i;
}
for(int j=1;j<=cnt;++j){
if(i*prime[j] >= maxn) break;
pricnt[i*prime[j]] = pricnt[i]+1;
vis[i*prime[j]] = true;
if(i % prime[j]){
mu[i*prime[j]] = -mu[i];
}
else{
mu[i*prime[j]] = 0;
break;
}
}
}
} void prepare(){
for(int i=1;i<maxn;++i){
for(int j= i;j<maxn;j+=i){
sum[j][pricnt[i]] += mu[j/i];
}
}
for(int i=1;i<maxn;++i){
for(int j =0;j<20;++j){
sum[i][j] +=sum[i-1][j];
}
}
for(int i=1;i<maxn;++i){
for(int j=1;j<20;++j){
sum[i][j] +=sum[i][j-1];
}
}
} LL gao(LL n,LL m,LL p) //枚举p
{
LL ans = 0;
for(int i=1,j;i<=n;i=j+1){
j = min(n/(n/i),m/(m/i));
ans += (sum[j][p]-sum[i-1][p])*(n/i)*(m/i);
}
return ans;
} int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
init();
prepare();
LL N,M,p;
int T; scanf("%d",&T);
while(T--){
scanf("%lld %lld %lld",&N, &M,&p);
LL res=0;
if(p>=20){
res = N*M;
}
else{
if(N>M) swap(N,M);
res = gao(N,M,p);
}
printf("%lld\n",res);
}
return 0;
}

HDU 4746 Mophues(莫比乌斯反演)的更多相关文章

  1. HDU 4746 Mophues (莫比乌斯反演应用)

    Mophues Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 327670/327670 K (Java/Others) Total ...

  2. hdu 4746 Mophues 莫比乌斯反演+前缀和优化

    Mophues 题意:给出n, m, p,求有多少对a, b满足gcd(a, b)的素因子个数<=p,(其中1<=a<=n, 1<=b<=m) 有Q组数据:(n, m, ...

  3. HDU 4746 Mophues 莫比乌斯反演

    分析: http://blog.csdn.net/acdreamers/article/details/12871643 分析参见这一篇 http://wenku.baidu.com/view/fbe ...

  4. Mophues HDU - 4746 (莫比乌斯反演)

    Mophues \[ Time Limit: 10000 ms\quad Memory Limit: 262144 kB \] 题意 求出满足 \(gcd\left(a,b\right) = k\), ...

  5. HDU - 4746预处理莫比乌斯反演

    链接 求[1,n] 和 [1,m]中有多少对数的GCD的素因子个数小于等于p 直接暴力做特定超时,所以我们想办法预处理,对于p大于18(1到5e5的最大素数因子个数)的情况,每一对都满足条件,O(1) ...

  6. HDU 4746 Mophues【莫比乌斯反演】

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4746 题意: 1≤x,y≤n , 求gcd(x,y)分解后质因数个数小于等k的(x,y)的对数. 分 ...

  7. HDU 4746 Mophues(莫比乌斯反演)题解

    题意: \(Q\leq5000\)次询问,每次问你有多少对\((x,y)\)满足\(x\in[1,n],y\in[1,m]\)且\(gcd(x,y)\)的质因数分解个数小于等于\(p\).\(n,m, ...

  8. hdu.5212.Code(莫比乌斯反演 && 埃氏筛)

    Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submi ...

  9. hdu 1695 GCD 莫比乌斯反演入门

    GCD 题意:输入5个数a,b,c,d,k;(a = c = 1, 0 < b,d,k <= 100000);问有多少对a <= p <= b, c <= q <= ...

  10. HDU 1695 GCD 莫比乌斯反演

    分析:简单的莫比乌斯反演 f[i]为k=i时的答案数 然后就很简单了 #include<iostream> #include<algorithm> #include<se ...

随机推荐

  1. 解决同一页面jQuery多个版本或和其他js库冲突方法

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  2. 数据降维PCA——学习笔记

    PCA主成分分析 无监督学习 使方差(数据离散量)最大,更易于分类. 可以对隐私数据PCA,数据加密. 基变换 投影->内积 基变换 正交的基,两个向量垂直(内积为0,线性无关) 先将基化成各维 ...

  3. Ubuntu 编译安装搭配LNMP 环境

    这里用Nginx1.2.0+mysql5.6.33+php5.6.2搭配安装环境 ---------------------------------------------Nginx BEGIN--- ...

  4. Margin外边距叠加

    外边距(Margin)叠加 只有普通文档流中块级元素(块框)的垂直外边距才会发生外边距叠加.行内框.浮动框和绝对定位框之间的外边距不会叠加 两个相邻兄弟块框 父元素与子元素,并 父元素没有内边距或边框 ...

  5. 编程之美 set 19 连连看游戏设计

    题目 1. 怎么用简单的计算机模型来描述这个问题 ? 2. 怎么判断两个图像是否能相消 3. 怎么求出相同图形之间的最短距离(转弯数最少)? 4. 怎么确定目前处于死锁状态? 如何设计算法来解除死锁? ...

  6. ios开发之--CGRect/CGSize/CGPoint/CGVector/CGAffineTransform/UIEdgeInsets/UIOffset和NSString之间的转换

    仅做记录,一个函数和字符串之间的互相转换 方法如下: UIKIT_EXTERN NSString *NSStringFromCGPoint(CGPoint point); UIKIT_EXTERN N ...

  7. 一句css代码让网站变灰

    <style> html{ -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grays ...

  8. 安装PHP扩展-----phpredis

    一.redis介绍 redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了 memcached的不足,它支持存储的value类型相 ...

  9. 使用隧道技术进行C&C通信

    一.C&C通信 这里的C&C服务器指的是Command & Control Server--命令和控制服务器,说白了就是被控主机的遥控端.一般C&C节点分为两种,C&a ...

  10. Chandy-Lamport_algorithm

    Chandy-Lamport algorithm - Wikipedia https://en.m.wikipedia.org/wiki/Chandy-Lamport_algorithm 经典快照算法 ...