传送门

Sol

分开考虑 \(\varphi(ij)\) 中 \(ij\) 的质因子

那么

\[\varphi(ij)=\frac{\varphi(i)\varphi(j)gcd(i,j)}{\varphi(gcd(i,j))}
\]

直接莫比乌斯反演

设 \(g(x,i)=\sum_{j=1}^{x}\varphi(ij)\)

那么

\[ans=\sum_{i=1}^{min(n,m)}g(\lfloor\frac{n}{i}\rfloor,i)g(\lfloor\frac{m}{i}\rfloor,i)\sum_{d|i}\mu(\frac{i}{d})\frac{d}{\varphi(d)}
\]

后面的卷积可以直接筛

\(\Theta(Tn)\) 当然不行了



\(f(i)=\sum_{d|i}\mu(\frac{i}{d})\frac{d}{\varphi(d)}\)

\(s(i,j,k)\) 表示 \(\sum_{p=1}^{k}g(i,p)g(j,p)f(p)\)

考虑到当 \(i\le \sqrt{n}\) 的时候 \(s(i,j,k)\) 中的 \(i,j \ge \sqrt{n}\)

当 \(i\ge \sqrt{n}\) 的时候 \(s(i,j,k)\) 中的 \(i,j \le \sqrt{n}\)

所以可以预处理到 \(s(80,80,k)\) 对于小于 \(n/80\) 的直接暴力

# include <bits/stdc++.h>
using namespace std;
typedef long long ll; const int mod(998244353);
const int maxn(1e5);
const int blk(80); inline void Inc(int &x, int y) {
if ((x += y) >= mod) x -= mod;
} int pr[maxn + 100], phi[maxn + 100], inv[maxn + 100], mu[maxn + 100], tot, f[maxn + 100];
int test, n, m, ans;
vector <int> g[maxn + 100], s[blk + 1][blk + 1];
bitset <maxn + 100> ispr; int main() {
register int i, j, k, len;
mu[1] = phi[1] = inv[1] = 1, ispr[1] = 1;
for (i = 2; i <= maxn; ++i) inv[i] = (ll)(mod - mod / i) * inv[mod % i] % mod;
for (i = 2; i <= maxn; ++i) {
if (!ispr[i]) pr[++tot] = i, mu[i] = -1, phi[i] = i - 1;
for (j = 1; j <= tot && i * pr[j] <= maxn; ++j) {
ispr[i * pr[j]] = 1;
if (i % pr[j]) mu[i * pr[j]] = -mu[i], phi[i * pr[j]] = phi[i] * (pr[j] - 1);
else {
mu[i * pr[j]] = 0;
phi[i * pr[j]] = phi[i] * pr[j];
break;
}
}
}
for (i = 1; i <= maxn; ++i) Inc(mu[i], mod);
for (i = 1; i <= maxn; ++i)
for (j = i; j <= maxn; j += i) Inc(f[j], (ll)i * inv[phi[i]] % mod * mu[j / i] % mod);
for (i = 1; i <= maxn; ++i) {
len = maxn / i, g[i].resize(len + 1);
for (j = 1; j <= len; ++j) g[i][j] = (g[i][j - 1] + phi[i * j]) % mod;
}
for (i = 1; i <= blk; ++i)
for (j = i; j <= blk; ++j) {
len = maxn / j, s[i][j].resize(len + 1);
for (k = 1; k <= len; ++k) s[i][j][k] = (s[i][j][k - 1] + (ll)f[k] * g[k][i] % mod * g[k][j] % mod) % mod;
}
for (scanf("%d", &test); test; --test) {
ans = 0, scanf("%d%d", &n, &m);
if (n > m) swap(n, m);
len = min(n, m / blk);
for (i = 1; i <= len; ++i) Inc(ans, (ll)g[i][n / i] * g[i][m / i] % mod * f[i] % mod);
for (i = len + 1; i <= n; i = j + 1) {
j = min(n / (n / i), m / (m / i));
Inc(ans, (s[n / i][m / i][j] - s[n / i][m / i][i - 1] + mod) % mod);
}
printf("%d\n", ans);
}
return 0;
}

Luogu 4240:毒瘤之神的考验的更多相关文章

  1. [luogu 4240] 毒瘤之神的考验

    题目背景 Salamander的家门口是一条长长的公路. 又是一年春天将至,Salamander发现路边长出了一排毒瘤! Salamander想带一些毒瘤回家,但是,这时毒瘤当中钻出来了一个毒瘤之神! ...

  2. luogu 4240 毒瘤之神的考验 (莫比乌斯反演)

    题目大意:略 题面传送门 果然是一道神duliu题= = 出题人的题解传送门 出题人的题解还是讲得很明白的 1.关于$\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m ...

  3. 洛谷 P4240 毒瘤之神的考验 解题报告

    P4240 毒瘤之神的考验 题目背景 \(\tt{Salamander}\)的家门口是一条长长的公路. 又是一年春天将至,\(\tt{Salamander}\)发现路边长出了一排毒瘤! \(\tt{S ...

  4. P4240 毒瘤之神的考验

    题目 P4240 毒瘤之神的考验 神仙题\(emmm\) 前置 首先有一个很神奇的性质: \(\varphi(ij)=\dfrac{\varphi(i)\varphi(j)gcd(i,j)}{\var ...

  5. 洛谷 P4240 - 毒瘤之神的考验(数论+复杂度平衡)

    洛谷题面传送门 先扯些别的. 2021 年 7 月的某一天,我和 ycx 对话: tzc:你做过哪些名字里带"毒瘤"的题目,我做过一道名副其实的毒瘤题就叫毒瘤,是个虚树+dp yc ...

  6. 从 [P4240 毒瘤之神的考验] 谈 OI 中的美学

    感觉这题真的特别有意思,涉及了 OI 中很多非常有意思.非常美的手法,比如--平衡两部分的时间复杂度.\(n \ln n\) 的那个 Trick等等,真的一种暴力的美学. 题目大意: 多组询问,求 \ ...

  7. 洛谷P4240 毒瘤之神的考验 【莫比乌斯反演 + 分块打表】

    题目链接 洛谷P4240 题解 式子不难推,分块打表真的没想到 首先考虑如何拆开\(\varphi(ij)\) 考虑公式 \[\varphi(ij) = ij\prod\limits_{p | ij} ...

  8. luogu4240 毒瘤之神的考验(毒瘤乌斯反演)

    link 题意:求出\(\sum_{i=1}^n\sum_{j=1}^m\varphi(ij)\),对998244353取模 多组数据,\(T\le 10^4,n,m\le 10^5\). 前置知识: ...

  9. Luogu4240 毒瘤之神的考验 莫比乌斯反演、根号分治

    传送门 首先有\(\varphi(ij) = \frac{\varphi(i) \varphi(j) \gcd(i,j)}{\varphi(\gcd(i,j))}\),把欧拉函数的定义式代入即可证明 ...

随机推荐

  1. 3.1 High Availability

    摘要: 出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但请保留该 ...

  2. mariadb配置主从同步遇到的问题

    一:ERROR: No query specified 解决方案: \G后面不能再加分号;,因为\G在功能上等同于;,如果加了分号,那么就是;;(2个分号),SQL语法错误 二:主从同步不成功 Sla ...

  3. NPOI设置水平、垂直居中

    C#语法: string fs = "@report.xls";//文件路径 FileStream excelPath = File.Open(@fs, FileMode.Open ...

  4. 厉害了,七牛云 CEO 来讲架构了!

    说起许式伟,你应该不陌生,他是七牛云的CEO,ECUG 社区发起人,国内 Go 语言圈的领军人物,曾就职于金山.盛大,有超过 10 年的搜索和分布式存储相关技术的研发经验. 他的个人经历颇为传奇,大学 ...

  5. 云服务器、vps、虚拟主机的区别

    云服务器 Elastic Compute Service, 简称ECS 好多人理解云服务器和VPS一样,更有甚者说以前的VPS现在的说法就是云服务器,其实不然,云服务器是一个计算,网络,存储的组合.简 ...

  6. java翻译到mono C#实现系列(2) mono实现GridView 横向滚动

    群里的朋友问GridView 横向滚动怎么实现,我就百度了,参考http://blog.csdn.net/lonely_fireworks/article/details/7841134写了个mono ...

  7. 警告: Hessian/Burlap: 'com.github.pagehelper.Page' is an unknown class in WebappClassLoader

    项目中使用mybatis的分页插件pagehelper出现下面的警告 出现上面的警告,并不影响程序的运行.但是毕竟看着比较闹心. 使用debug进行代码根据发现,执行的过程中使用到了pagehelpe ...

  8. [中英对照]Why Redis beats Memcached for caching | 在cache化方面,为何Redis胜过Memcached?

    对Memcached和Redis有兴趣的同学不妨花几分钟读一读本文,否则请飘过. Why Redis beats Memcached for caching | 在cache化方面,为何Redis胜过 ...

  9. 【c++】友元

    c++引入友元的原因 在某些情况下,允许特定的非成员函数访问类的私有成员.在类中以关键字friend开始(只能出现在类定义的内部),声明为友元的可以为类.类的成员函数.普通的非成员函数. 速览 #in ...

  10. Tomcat源码分析——请求原理分析(中)

    前言 在<TOMCAT源码分析——请求原理分析(上)>一文中已经介绍了关于Tomcat7.0处理请求前作的初始化和准备工作,请读者在阅读本文前确保掌握<TOMCAT源码分析——请求原 ...