题意:\(f(n)\)为n的质因子分解中的最大幂指数,求\(\sum_{i=1}^n \sum_{j=1}^m f(gcd(i,j))\)


套路推♂倒

\[\sum_{D=1}^n \sum_{d|D} f(d)\mu(\frac{D}{d}) \frac{n}{D} \frac{m}{D}
\]

这次函数是\(g = (f*\mu )\),\(f\)显然不是积性函数,但我们照样可以用线性筛

具体做法我晚上回家再补吧草稿纸忘带了...

补:

  • \(g(p^a)=p-(p-1)\)

    因为卷了\(\mu\)所以只有\(\mu(1)\)和\(\mu(p)\)时有贡献
  • 考虑\(g(p_1^{a_1} p_2^{a_2}...p_k^{a_k})\),相当于选p的集合,每种p只能选一个放到\(\mu\)里,其余部分在\(f\)里
  • 所有\(a\)相等时,所有集合的结果都是\(a\),只有全选时是\(a-1\),系数\((-1)^k\),那么结果就是\(-(-1)^k\)咯
  • 不相等时,假设最大次数\(a\)有\(b\)个质数,\(a\)出现\(2^b\)此,\(a-1\)出现\(2^{k-b}\)次,正负都抵消了,所以结果为0



线性筛保存最小质因子幂次后的结果和幂次,利用之前的$g$值

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
#define pii pair<int, int>
#define MP make_pair
#define fir first
#define sec second
typedef long long ll;
const int N=1e7+5;
inline int read(){
char c=getchar();int x=0,f=1;
while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}
return x*f;
} int n, m, k;
int notp[N], p[N], g[N]; pii lp[N];
void sieve(int n) {
g[1] = 0;
for(int i=2; i<=n; i++) {
if(!notp[i]) {
p[++p[0]] = i;
g[i] = 1;
lp[i] = MP(i, 1);
}
for(int j=1; j<=p[0] && i*p[j]<=n; j++) {
int t = i*p[j];
notp[t] = 1;
if(i%p[j] == 0) {
lp[t] = MP(lp[i].fir * p[j], lp[i].sec + 1);
int rem = i / lp[i].fir;
if(rem == 1) g[t] = 1;
else g[t] = lp[t].sec == lp[rem].sec ? -g[rem] : 0;
break;
}
lp[t] = MP(p[j], 1);
g[t] = lp[t].sec == lp[i].sec ? -g[i] : 0;
}
}
for(int i=1; i<=n; i++) g[i] += g[i-1];
}
ll cal(int n, int m) {
if(n>m) swap(n, m);
ll ans=0; int r;
for(int i=1; i<=n; i=r+1) {
r = min(n/(n/i), m/(m/i));
ans += (ll) (g[r] - g[i-1]) * (n/i) * (m/i);
}
return ans;
} int main() {
//freopen("in","r",stdin);
sieve(N-1);
int T=read();
while(T--) {
n=read(); m=read();
printf("%lld\n", cal(n, m));
}
}

BZOJ 3309: DZY Loves Math [莫比乌斯反演 线性筛]的更多相关文章

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

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

  2. 【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 ...

  3. 【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, ...

  4. [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 ...

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

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

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

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

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

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

  8. 【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) ...

  9. ●BZOJ 3309 DZY Loves Math

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3309 题解: 莫比乌斯反演,线筛 化一化式子: f(x)表示x的质因子分解中的最大幂指数 $ ...

随机推荐

  1. HTML5基础篇章1

    ①<!DOCTYPE>(声明文档类型): <!DOCTYPE>必须要声明在文档的第一行,而且要在html标签之前 . <!DOCTYPE>是一条规定页面使用那个ht ...

  2. #if defined、#if !defined用法

    大型程序或者修改别人的程序时,当我们需要定义常量(源文件还是头文件 ),我们就必须返回检查原来此常量是否已经定义, if defined宏 就是用于检测的. 举个例子,如下: #define .... ...

  3. 01 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之业务分析与DAO层

    作者:nnngu 项目源代码:https://github.com/nnngu/nguSeckill 这是一个整合IDEA+Maven+SSM框架的高并发的商品秒杀项目.我们将分为以下几篇文章来进行详 ...

  4. xss防御

    http://blog.csdn.net/ghsau/article/details/17027893

  5. JavaScript总结学习一:js中构造函数与普通函数的区别

    构造函数不仅只出现在JavaScript中,它同样存在于很多主流的程序语言里,比如c++.Java.PHP等等.与这些主流程序语言一样,构造函数在js中的作业一样,也是用来创建对象时初始化对象,并且总 ...

  6. UWP: 实现 UWP 应用自启动

    在上一篇文章中,我们实现了使用命令行来启动 UWP 应用,在这一篇文章中,我们会实现 UWP 应用自启用的实现,也即开机后或用户登陆后,应用自己启动.这些特性原来都是 Win32 程序所具备的,UWP ...

  7. Git: 本地创建版本库用于多处同步

    问题背景 目前有一个 Android 和 一个 iOS 项目,两个项目底层使用相同的 C++ 代码.由于在开发迭代中代码时常更新,而且往往是今天 Android 部分修改一小部分,明天 iOS 部分修 ...

  8. Python中变量和常量的理解

    一.变量的定义:把程序运算的中间结果临时存到内存里,以备后面的代码继续调用,这几个名字的学名就叫做"变量". 二.变量的作用:变量用于存储要在计算机程序中引用和操作的信息.它提供了 ...

  9. 溢出问题:overflow后最后一排文字显示不全

    溢出字体会显示在padding区域(http://www.divcss5.com/css-hack/c680.shtml) section#xinwen li a h3{ border-bottom: ...

  10. PHP date()函数详解

    date (PHP 4, PHP 5) date - 格式化一个本地时间/日期 说明¶ string date ( string $format [, int $timestamp ] ) 返回将整数 ...