题目描述


∑1≤a≤b≤n,gcd(a,b)=1,a+b≥n1ab\sum\limits_{1\leq a \le b \leq n,gcd(a,b)=1,a+b \geq n}\frac{1}{ab}1≤a≤b≤n,gcd(a,b)=1,a+b≥n∑​ab1​
1≤T≤1e4,1≤N≤1e81 \leq T \leq 1e4 , 1\leq N \leq 1e81≤T≤1e4,1≤N≤1e8

分析

有a+b≥na+b \geq na+b≥n,所以考虑和前一项作差。
fn=∑1≤a<b≤n,gcd(a,b)=1,a+b≥n1abf_n = \sum\limits_{1\leq a < b \leq n,gcd(a,b)=1,a+b \geq n}\frac{1}{ab}fn​=1≤a<b≤n,gcd(a,b)=1,a+b≥n∑​ab1​
作差之后,少了个a+b=n−1a+b = n-1a+b=n−1,多了个b=nb=nb=n即:
fn=fn−1+∑1≤a<n,gcd(a,n)=11an−∑1≤a<b≤n,gcd(a,b)=1,a+b=n−11abf_n = f_{n-1} + \sum\limits_{1 \leq a < n,gcd(a,n)=1} \frac{1}{an} - \sum\limits_{1\leq a < b \leq n,gcd(a,b)=1,a+b = n-1}\frac{1}{ab}fn​=fn−1​+1≤a<n,gcd(a,n)=1∑​an1​−1≤a<b≤n,gcd(a,b)=1,a+b=n−1∑​ab1​
发现对于后面-的部分,设为gng_ngn​有:
gn=∑1≤a<b≤n,gcd(a,b)=1,a+b=n1ab=1n∑1≤a<b≤n,gcd(a,b)=1,a+b=n1a+1b=1n∑1≤a<n,gcd(a,n)=11ag_n=\sum\limits_{1\leq a < b \leq n,gcd(a,b)=1,a+b = n}\frac{1}{ab} = \frac{1}{n}\sum\limits_{1\leq a < b \leq n,gcd(a,b)=1,a+b = n} \frac{1}{a} + \frac{1}{b} = \frac{1}{n}\sum\limits_{1\leq a < n,gcd(a,n)=1} \frac{1}{a}gn​=1≤a<b≤n,gcd(a,b)=1,a+b=n∑​ab1​=n1​1≤a<b≤n,gcd(a,b)=1,a+b=n∑​a1​+b1​=n1​1≤a<n,gcd(a,n)=1∑​a1​
且上面式子的n≥3n\geq 3n≥3,当n=2n=2n=2时,g2=0g_2 = 0g2​=0
发现跟前面那一项长的差不多,其实就是有:
fn=fn−1+gn−gn−1f_n= f_{n-1} + g_n-g_{n-1}fn​=fn−1​+gn​−gn−1​
将fn−1f_{n-1}fn−1​再裂开,我们就有fn=f2+gn−g2=12+gnf_n = f_2 + g_n - g_2 = \frac{1}{2} + g_nfn​=f2​+gn​−g2​=21​+gn​
对于gng_ngn​,有:
gn=1n∑i=1n1i∑d∣gcd(i,n)μ(d)=1n∑d∣nμ(d)dS(⌊nd⌋)g_n = \frac{1}{n} \sum\limits_{i=1}^{n} \frac{1}{i}\sum\limits_{d|gcd(i,n)} \mu(d) = \frac{1}{n}\sum\limits_{d|n} \frac{\mu(d)}{d}S(\lfloor \frac{n}{d} \rfloor)gn​=n1​i=1∑n​i1​d∣gcd(i,n)∑​μ(d)=n1​d∣n∑​dμ(d)​S(⌊dn​⌋)
然后开一个1e81e81e8的数组,需要380MB380MB380MB的空间,所以我们可以预处理前缀和,然后对于每个nnn进行质因数分解,然后二进制枚举质因数即可。

代码

#include <bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define dep(i,a,b) for(int i=(a);i>=(b);--i)
#define fi first
#define se second
#define CL clear
#define MP make_pair
#define PB push_back//#define int long longconst int N = (int) 1e8 + 10;
const int mod = (int) 998244353;using namespace std;typedef long long ll;inline int rd() {int p=0; int f=1; char ch=getchar();while(ch<'0' || ch>'9'){if(ch=='-') f*=-1; ch=getchar();}while(ch>='0' && ch<='9'){p=p*10+ch-'0'; ch=getchar();}return p*f;
}int inv[N];ll qpow(ll x,ll k,ll mo) {ll s = 1;while(k) {if(k&1) s=1ll*s*x%mo;x=1ll*x*x%mo; k>>=1;}return s;
}vector<ll> fac;signed main() {inv[0] = inv[1] = 1;for(int i=2;i<=(int)(1e8);++i) inv[i] = (ll)(mod - mod / i) * inv[mod % i] % mod;for(int i=2;i<=(int)(1e8);++i) inv[i] = (inv[i-1] + inv[i]) % mod;int t = rd();while(t--) {ll n = rd(); ll ans = qpow(2,mod-2,mod); ll x = n;fac.CL(); for(ll i=2;i*i<=x;++i) if(x%i == 0) {fac.PB(i);while(x%i==0) x/=i;}if(x!=1) fac.PB(x);ll gn = 0;if(n>2) {for(ll i=0;i<(1<<fac.size());++i) {ll d = 1; ll s = 0;for(ll j=0;j<fac.size();++j) if(i&(1<<j)){d *= fac[j]; s++;}gn = (gn + 1ll * ((s&1) ? (-1) : 1) * qpow(d,mod-2,mod) % mod * inv[n/d] % mod) % mod;}gn = gn * qpow(n , mod-2 , mod) % mod;}else gn = 0;printf("%lld\n",(ans + gn + mod) % mod);}return 0;
}

HDU6760 Math is Simple 数学变形+莫比乌斯反演相关推荐

  1. 数学:莫比乌斯反演-约数个数和

    BZOJ3994:利用莫比乌斯反演求约数个数和 解答此题需要利用约束个数函数的形式,将其与gcd联系再一起,然后再反演,推导 很麻烦 1 #include<cstdio> 2 #inclu ...

  2. 数学--数论--莫比乌斯反演

    一.莫比乌斯反演涉及知识 1.莫比乌斯函数 2.莫比乌斯的线性筛法 3.狄利克雷卷积 4.莫比乌斯反演详解 5.整除法分块 6.杜教筛 二.μ 莫比乌斯函数定义 μ(n)={1n=1(−1)kn= P ...

  3. 模板 - 数学 - 数论 - 莫比乌斯反演 - 2

    新东西: 求$\sum\limits_{i=1}^{n}|\mu(i)|$ 根据莫比乌斯函数的性质,实际上就是求$\sum\limits_{i=1}^{\lfloor\sqrt{n}\rfloor}\ ...

  4. 数学(莫比乌斯反演):HAOI 2011 问题B

    题目描述: 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 输入格式: 第一行一个整数n,接下来n ...

  5. 莫比乌斯反演/容斥 +2020ICPC 江西省大学生程序设计竞赛 A Simple Math Problem

    题目描述 输入描述: 输出描述: 示例1 输入 3 输出 5 分析: 1.这个题其实考的是一个莫比乌斯反演题,但是由于我知识储备不够,没有看出来,题目给的范围可以瞎搞一下,所以下面容斥可以过. 2.转 ...

  6. 《算法竞赛进阶指南》数论篇(3)-组合计数,Lucas定理,Catalan数列,容斥原理,莫比乌斯反演,概率与数学期望,博弈论之SG函数

    文章目录 组合计数 例题:Counting swaps Lucas定理 Cnm≡Cnmodpmmodp∗Cn/pm/p(modp)C_n^m\equiv C_{n\ mod\ p}^{m\ mod\ ...

  7. 【数学专题】莫比乌斯反演与积性函数

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的模板整合计划 目录 莫比乌斯反演 AcWing 2702. problem b AcWing 1358. 约数个数和(莫 ...

  8. 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)

    先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...

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

    一通正常的莫比乌斯反演后,我们只需要求出g(n)=Σf(d)*μ(n/d)的前缀和就好了. 考虑怎么求g(n).当然是打表啊.设n=∏piai,n/d=∏pibi .显然若存在bi>1则这个d没 ...

最新文章

  1. 【代码保留】表删除/重命名(含中文与空格)
  2. Spring学习11之AOP
  3. 为了OFFER,花了几个小时,刷下Leetcode链表算法题
  4. Linux 添加DNS配置
  5. lua工具库penlight--08额外的库(二)
  6. php无限极菜单,无限极菜单的实现
  7. 小试牛刀:文本处理工具之grep、egrep详解
  8. 针对需要使用T3协议的Weblogic2628漏洞解决方案
  9. 文件中有一组整数,要求排序后输出到另一个文件中
  10. C# NPOI(xlsx相关操作)
  11. 拖拽 开发 easyui php,Easyui-Builder
  12. 如何让网站自动识别手机端与PC端
  13. 电脑的计算机文件打开格式,如何打开zip文件_怎样在电脑上打开zip文件
  14. 生鲜配送app开发方案
  15. 高德地图定位、添加定位图标、连线(二)
  16. Spirngboot整合之Mybatis-plus yml配置
  17. 2022-05-25 postgres中的并发控制的可重复读
  18. 二维计算机动画,二维计算机动画制作新技术.pdf
  19. 陆金所-稳盈-安e+ 新标-QQ自动通知
  20. [洛谷]P1936 水晶灯火灵 (#递推 -1.3)

热门文章

  1. MYSQL给表或者字段写注释
  2. 压缩包文件如何将密码找回来
  3. permutation importance
  4. AI医疗落地挑战:需求“实打实存在”,商业价值如何挖掘?
  5. 万变不离其宗之ZYNQ串口介绍
  6. VUE实现登录和登出
  7. 做程序员累了想要转行?我想给大家分享一下看法
  8. Java标识符的命名规则有哪些
  9. React hooks - Ref 使用实例
  10. Tomcat 部署方式