OK!开始更新莫比乌斯反演

先看了一下数据范围,嗯,根据\(jiry\)老师的真言,我们一定是可以筛一遍然后用根号或者是\(log\)的算法。

题目思路挺简单,就是把原始的式子化成:

\(\sum_{k = 1}^{min(a,b)}(a/k)(b/k) \sum_{d | k} f(d) * \mu (k / d)\)

由于莫反的函数是建立在积性上的,但是后面那个显然不是积性。

我们考虑把后面的式子代换一下:\(g(n) = \sum_{d|n}f(n/d) * \mu(d)\)

考虑\(\mu\)这个函数,当\(x > 0\)是1,否则是0.

我们只考虑1的情况,如果是1它就只能是\(d = \prod_{p_i | d} p_i\)

\(k = (d的条件)^r\)时,\(g\)函数不为0.

此时\(g(n) = -\mu(\prod p_i)\)

然后考虑线性筛法求出\(g\)即可。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
inline int read () {
int q=0,f=1;char ch = getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;ch=getchar();
}
while(isdigit(ch)){
q=q*10+ch-'0';ch=getchar();
}
return q*f;
}
ll ans;
const int maxn = 10000008;
int prime[maxn];
bool is_prime[maxn];
int cnt;
int miu[maxn];
inline void init () {
cnt = 0;
memset(prime,0,sizeof(prime));
memset(is_prime,0,sizeof(is_prime));
miu[1] = 1;
for(int i = 2;i < maxn; ++i) {
if(!is_prime[i]) {
prime[++cnt] = i;
miu[i] = -1;
}
for(int j = 1;j <= cnt; ++j) {
if(i * prime[j] >= maxn) {
break;
}
else {
is_prime[i * prime[j]] = 1;
if(i % prime[j]) {
miu[i * prime[j]] = -miu[i];
}
else {
miu[i * prime[j]] = 0;
break;
}
}
}
}
// cout<<1<<endl;
}
int g[maxn];
inline void calc () {
init();
g[0] = g[1] = 0;
for(ll i = 2;i < maxn; ++i) {
if(miu[i]) {
for(ll j = i;j < maxn; j *= i) {
g[j] = -miu[i];
}
}
}
for(ll i = 2;i < maxn; ++i) {
g[i] += g[i - 1];
}
// cout<<1<<endl;
}
int T;
int main () {
calc();
T = read();
while(T--) {
int n = read(),m = read();
if(n > m) swap(n,m);
ans = 0;
for(int i = 1,j;i <= n;i = j + 1) {
j = min(n / (n / i),m / (m / i));
ans += (ll)(n / i) * (m / i) * ( g[j] - g[i - 1] );
}
printf("%lld\n",ans);
}
return 0;
}

DZY LOVES MATH (莫比乌斯反演)的更多相关文章

  1. 【BZOJ】3309: DZY Loves Math 莫比乌斯反演优化

    3309: DZY Loves Math Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007) ...

  2. bzoj 3309 DZY Loves Math 莫比乌斯反演

    DZY Loves Math Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1303  Solved: 819[Submit][Status][Dis ...

  3. 【BZOJ3309】DZY Loves Math 莫比乌斯反演+线性筛(好题)

    [BZOJ3309]DZY Loves Math Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10 ...

  4. 【BZOJ3309】DZY Loves Math - 莫比乌斯反演

    题意: 对于正整数n,定义$f(n)$为$n$所含质因子的最大幂指数.例如$f(1960)=f(2^3 * 5^1 * 7^2)=3$,$f(10007)=1$,$f(1)=0$. 给定正整数$a,b ...

  5. 【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛

    Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b, ...

  6. BZOJ 3309 DZY Loves Math ——莫比乌斯反演

    枚举$d=gcd(i,j)$ 然后大力反演 ——来自Popoqqq的博客. 然后大力讨论后面的函数的意义即可. http://blog.csdn.net/popoqqq/article/details ...

  7. BZOJ 3309: DZY Loves Math [莫比乌斯反演 线性筛]

    题意:\(f(n)\)为n的质因子分解中的最大幂指数,求\(\sum_{i=1}^n \sum_{j=1}^m f(gcd(i,j))\) 套路推♂倒 \[ \sum_{D=1}^n \sum_{d| ...

  8. [BZOJ3309]DZY Loves Math(莫比乌斯反演+线性筛)

    $\sum\limits_{T=1}^{n}\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\sum\limits_{d|T}f(d)\mu(\fr ...

  9. bzoj 3309 DZY Loves Math —— 莫比乌斯反演+数论分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3309 凭着上课所讲和与 Narh 讨论推出式子来: 竟然是第一次写数论分块!所以迷惑了半天: ...

  10. BZOJ 3309: DZY Loves Math 莫比乌斯反演+打表

    有一个神奇的技巧——打表 code: #include <bits/stdc++.h> #define N 10000007 #define ll long long #define se ...

随机推荐

  1. 【索引】位图BitMap索引

    位图(BitMap)索引 前段时间听同事分享,偶尔讲起Oracle数据库的位图索引,顿时大感兴趣.说来惭愧,在这之前对位图索引一无所知,因此趁此机会写篇博文介绍下位图索引. 1. 案例 有张表名为ta ...

  2. python语法学习

    global关键字(内部作用域想要对外部作用域的变量进行修改) decator装饰器,说白了就是一个函数指针的传递 *arg,**kwarg, 分别为tuple,dic传递

  3. 【hihocoder 1554】最短的 Nore0061

    [链接]http://hihocoder.com/problemset/problem/1554 [题意] 中文题 [题解] DP; 设f[i][j][k]表示前i个字符,第一个串已经得到了前j个字符 ...

  4. ASP.NET Core学习——1

    ASP.NET Core介绍 ASP.NET Core是一个新的开源和跨平台的框架,用于构建如Web应用.物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序.ASP.NET Cor ...

  5. Future初次使用理解

    当客户端执行方法时,立即返回一个代理对象,此时代理对象没有数据,与此同时开启一个线程去构造真实对象并把真实对象替换掉代理对象(使用set方法).所以就会出现,客户端收到代理对象之后以为执行完了然后执行 ...

  6. (12)centos7 环境变量配置

    export 一个变量的设置一般只在当前环境有效,export命令可以用于传递一个或多个变量的值到任何后续脚本.export可新增.修改或删除环境变量,供后续执行的程序使用.export的效力限于该次 ...

  7. python random生成随机手机号

    上代码 #--------------- #!/usr/bin/python #_*_coding:UTF-8_*_ import random #生成随机手机号 str_start=random.c ...

  8. XML XPATH simpleXML

    XPath 通过DOM结构定位节点,在数据量很大的情况下速度下降的很厉害.解决方法是XPath.Xpath的作用:用于快速定位节点 position()是节点的位置,节点的位置是从1开始 simple ...

  9. 高效IO之File文件操作类的基础用法(二)

    更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680 前言 众所周知Java提供File类,让我们对文件进行操作,下面就来简单整理了一 ...

  10. D题 Robots 【期望】

    Robots Given a directed graph with no loops which starts at node 11 and ends at node nn.There is a r ...