GuGuFishtion HDU - 6390(莫比乌斯反演+线性求逆元)

莫比乌斯反演(宋新波) 立即下载

GuGuFishtion HDU - 6390

Today XianYu is too busy with his homework, but the boring GuGu is still disturbing him!!!!!!
At the break time, an evil idea arises in XianYu’s mind.
‘Come on, you xxxxxxx little guy.’
‘I will give you a function ϕ(x) which counts the positive integers up to x that are relatively prime to x.’
‘And now I give you a fishtion, which named GuGu Fishtion, in memory of a great guy named XianYu and a disturbing and pitiful guy GuGu who will be cooked without solving my problem in 5 hours.’
‘The given fishtion is defined as follow:

Gu(a,b)=ϕ(ab)ϕ(a)ϕ(b) G u ( a , b ) = ϕ ( a b ) ϕ ( a ) ϕ ( b )

And now you, the xxxxxxx little guy, have to solve the problem below given m,n,p.’

(∑a=1m∑b=1nGu(a,b))  (mod  p) ( ∑ a = 1 m ∑ b = 1 n G u ( a , b ) )     ( m o d     p )

So SMART and KINDHEARTED you are, so could you please help GuGu to solve this problem?
‘GU GU!’ GuGu thanks.

Input
Input contains an integer T indicating the number of cases, followed by T lines. Each line contains three integers m,n,p as described above.
1≤T≤3 1 ≤ T ≤ 3
1≤m,n≤1,000,000 1 ≤ m , n ≤ 1 , 000 , 000
max(m,n)<p≤1,000,000,007 m a x ( m , n ) < p ≤ 1 , 000 , 000 , 007
And given p
is a prime.
Output
Please output exactly T
lines and each line contains only one integer representing the answer.
Sample Input

1
5 7 23

Sample Output

2
题意:

让你求公式

(∑a=1m∑b=1nGu(a,b))  (mod  p) ( ∑ a = 1 m ∑ b = 1 n G u ( a , b ) )     ( m o d     p )

其中

Gu(a,b)=ϕ(ab)ϕ(a)ϕ(b) G u ( a , b ) = ϕ ( a b ) ϕ ( a ) ϕ ( b )

分析:

第一步:

首先我们必然是要观察函数

Gu(a,b)=ϕ(ab)ϕ(a)ϕ(b) G u ( a , b ) = ϕ ( a b ) ϕ ( a ) ϕ ( b )

根据算术基本定理

假设
a=pa11pa22pa33 a = p 1 a 1 p 2 a 2 p 3 a 3

b=pk11pk44pk55 b = p 1 k 1 p 4 k 4 p 5 k 5

那么

Gu(a,b)=ϕ(pa1+k11pa22pa33pk44pk55)ϕ(pa11pa22pa33)ϕ(pk11pk44pk55) G u ( a , b ) = ϕ ( p 1 a 1 + k 1 p 2 a 2 p 3 a 3 p 4 k 4 p 5 k 5 ) ϕ ( p 1 a 1 p 2 a 2 p 3 a 3 ) ϕ ( p 1 k 1 p 4 k 4 p 5 k 5 )

根据欧拉函数是积性函数的性质

如果 p和q p 和 q 互质,则 ϕ(pq)=ϕ(p)ϕ(q) ϕ ( p q ) = ϕ ( p ) ϕ ( q )

因此上式最终化简得到

Gu(a,b)=ϕ(pa1+k11)ϕ(pa11)ϕ(pk11) G u ( a , b ) = ϕ ( p 1 a 1 + k 1 ) ϕ ( p 1 a 1 ) ϕ ( p 1 k 1 )

再次根据欧拉函数的性质

素数的幂次的欧拉函数 ϕ(pk)=pk−pk−1 ϕ ( p k ) = p k − p k − 1

因此上式再次化简得到

Gu(a,b)=pa1+k11(1−1p1)pa11(1−1p1)pk11(1−1p1) G u ( a , b ) = p 1 a 1 + k 1 ( 1 − 1 p 1 ) p 1 a 1 ( 1 − 1 p 1 ) p 1 k 1 ( 1 − 1 p 1 )

假设 a1<k1 a 1 < k 1 那么说明 pa11 p 1 a 1 是a,b的最大公因数

因此得到

Gu(a,b)=pa11pa11(1−1p1)=gcd(a,b)ϕ(gcd(a,b)) G u ( a , b ) = p 1 a 1 p 1 a 1 ( 1 − 1 p 1 ) = g c d ( a , b ) ϕ ( g c d ( a , b ) )


第二步:

我们设 a[i]=iϕ(i) a [ i ] = i ϕ ( i )

原式化为

∑i=1m∑j=1na[gcd(i,j)] % p ∑ i = 1 m ∑ j = 1 n a [ g c d ( i , j ) ]   %   p

=∑d=1min(m,n)∑i=1m∑j=1na[d]⋅[gcd(i,j)==d] = ∑ d = 1 m i n ( m , n ) ∑ i = 1 m ∑ j = 1 n a [ d ] ⋅ [ g c d ( i , j ) == d ]

( [gcd(i,j)==d] [ g c d ( i , j ) == d ] 表示 m,n范围内最大公因数为d m , n 范 围 内 最 大 公 因 数 为 d 的个数)

这个时候我们发现只需要枚举 gcd g c d ,就可以求出 a[i] a [ i ]

剩下的目标就成了求 gcd=d g c d = d 在范围 [1,m]和[1,n] [ 1 , m ] 和 [ 1 , n ] 的个数了

那么现在的问题就和题目HDU 1695 GCD一毛一样了

为了深化理解这里再次详细解释一下


第三步:

对于求解在 [1,m]和[1,n] [ 1 , m ] 和 [ 1 , n ] 范围内 gcd(i,j)=g g c d ( i , j ) = g 的个数

完全等价于在区间 [1,mg],[1,ng] [ 1 , m g ] , [ 1 , n g ] 中 gcd(ig,jg)=1 g c d ( i g , j g ) = 1

这时需要使用莫比乌斯反演

设 f(d) f ( d ) 表示 gcd=d g c d = d 的个数

设 F(d) F ( d ) 表示 gcd=d及其d的倍数 g c d = d 及 其 d 的 倍 数 的个数

我们知道在区间 [1,m] [ 1 , m ] 范围内含有因子d及其d的倍数的个数为 md m d

那么 F(d)=md⋅nd F ( d ) = m d ⋅ n d

根据莫比乌斯反演的倍数公式

F(d)=∑n|df(d)⟶f(d)=∑n|dμ(dn)F(d) F ( d ) = ∑ n | d f ( d ) ⟶ f ( d ) = ∑ n | d μ ( d n ) F ( d )

根据上面的分析我么要求 f(1),即n=1 f ( 1 ) , 即 n = 1

所以 f(1)=∑1|dμ(d)F(d) f ( 1 ) = ∑ 1 | d μ ( d ) F ( d )

因此我们只需要枚举1的倍数(当然了就是 1−min(n,m) 1 − m i n ( n , m ) 全加起来)

这里注意最一开始我们枚举的是gcd,本来要求gcd=g的个数,同除gcd将问题转化成gcd=1的个数

因此注意F(d)函数实际应为 F(d)=mgd⋅ngd F ( d ) = m g d ⋅ n g d

因为时间卡的很紧,这里面因为涉及除法取模因此要求逆元,如果使用快速幂每次算是会超时的因此这里又学到了一个新的东西,线性筛逆元的方法

这样就效率就提高了很多


所以这道题目其实是HDU 1695 GCD这道题的多次求解。

code:

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
typedef long long ll;
const int maxn = 1e6+5;
int n,m;
ll p;
ll a[maxn],res[maxn],mu[maxn],inv[maxn];
void Euler(){
    memset(res,0,sizeof(res));
    res[1] = 1;
    for(int i = 2; i < maxn; i++) res[i] = i;
    for(int i = 2; i < maxn; i++){
        if(res[i] == i){
            for(int j = i; j < maxn; j += i){
                res[j] = res[j] / i * (i - 1);
            }
        }
    }
    mu[1] = 1;
    for(int i = 1; i < maxn; i++)
        for(int j = i * 2; j < maxn; j += i)
            mu[j] -= mu[i];
}

void init(){
    inv[1] = 1;
    for(int i = 2; i <= min(m,n); i++) inv[i] = inv[p%i] * (p - p / i) % p;
    for(int i = 1; i <= min(m,n); i++){
        a[i] = (ll)i * inv[res[i]] % p;
    }
}

ll get(int n,int m){
    ll ans = 0;
    for(int i = 1; i <= min(n,m); i++){
        ans += (ll)mu[i] * (n / i) * (m / i);
        ans %= p;
    }
    return ans;
}
int main(){
    Euler();
    int T;
    scanf("%d",&T);
    while(T--){
        scanf("%d%d%lld",&n,&m,&p);
        init();
        ll ans = 0;
        for(int i = 1; i <= min(n,m); i++){
            ans += (ll)a[i] * get(n/i,m/i);
            ans %= p;
        }
        printf("%lld\n",ans);
    }
    return 0;
}
二阶系统的带宽(频域分析) 下面以典型I型系统为例,计算系统的开环截止频率和闭环截止频率。设I型系统为: 1:系统的开环截止频率为 2:系统的闭环截止频率 其实我们在工程整定时,把ζ = 0.707,也把系统的带宽近视看成自然震荡角频率即 (wb≈wc≈wnw_{b}\approx w_{c}\approx w_{n}wb​≈wc​≈wn​)对于二阶系统。 ... 阅读详情

相关推荐

基于MediaPipe的智能俯卧撑计数与姿势矫正系统

在现代健身和体能训练中,俯卧撑是最基础也是最有效的自重训练动作之一。然而,许多人在进行俯卧撑训练时常常存在姿势不正确、计数不准确等问题。本文将介绍如何利用计算机视觉和姿态估计技术,开发一个智能的俯卧撑计数与姿势矫正系统。

qq_36224726的博客 916

GuGuFishtion(hdu 6390 欧拉函数+莫比乌斯函数)

题目: GuGuFishtion   题意: 设 ,已知m,n,p,求   。   思路: 欧拉函数性质: (p为质数)。 一个数肯定能表示成若干个质数的乘积,因此,设。   (其余的项上下展开后都可以约掉,因为它们互质) 设 。 设 设   为莫比乌斯函数,有如下性质: (当n=1时) (当n&gt;1时) 当gcd(a,...

残阳止水 748

Excel聚光灯效果终极指南:VBA代码实现与条件格式避坑技巧

本文详细解析了Excel聚光灯效果的实现方法,包括VBA代码优化与条件格式的避坑技巧。通过模块化编程和性能优化技术,帮助用户高效处理大型数据表格,实现自定义高亮显示,提升数据分析和报表阅读体验。

v6b7n8m9q0的博客 456

HDU6390:GuGuFishtion(数学)

GuGuFishtion Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 112    Accepted Submission(s): 38   Problem Description Today XianYu is too bus...

junior19的博客 455

HR效率翻倍!用Dify+飞书AI表格打造自动化简历处理流水线(附完整代码)

本文详细介绍了如何利用Dify工作流和飞书多维表格构建自动化简历处理系统,实现简历上传、AI智能解析与结构化数据入库的全流程自动化。通过整合大语言模型进行信息抽取,该系统能显著提升HR处理简历的效率与准确性,将HR从重复劳动中解放出来。

1a2s3d4f5g的博客 1025

Dify 第 13 篇 Dify 工作流 详解

工作流通过将复杂任务分解为节点降低复杂度,提升LLM应用的性能和稳定性。Dify工作流分为两类:Chatflow面向对话场景(如客服),支持多轮对话;Workflow面向批处理场景(如翻译),提供逻辑节点实现自动化。核心概念包括节点、变量(系统/会话/环境变量)及应用类型差异:Chatflow支持中间输出和对话历史,Workflow仅支持结束节点输出。系统变量以"sys"开头,用于全局数据传递,不同应用类型变量不同,如Chatflow的sys.query存储用户输入,Workflow的s

甘蓝的专栏 3246

HDU 6390 容斥原理

题意 传送门 HDU 6390 题解 若 gcd(a,b)=1gcd(a,b)=1gcd(a,b)=1,则有 ϕ(a)ϕ(b)=ϕ(ab),Gu(a,b)=1\phi(a)\phi(b)=\phi(ab),G_u(a,b)=1ϕ(a)ϕ(b)=ϕ(ab),Gu​(a,b)=1 假设 a=pe1,b=pe2a=p^{e1},b=p^{e2}a=pe1,b=pe2,则有 Gu(a,b)=pe1+e2∗(p−1)/p[pe1∗(p−1)/p]∗[pe2∗(p−1)/p]=pp−1G_u(a,b)=\frac{p^

neweryyy的博客 223

基于PPT的三维光路结构示意图绘制实例演示-技术细节

基于PPT的三维光路结构示意图绘制实例演示-技术细节

简单光学 7466

GuGuFishtion HDU - 6390 (欧拉函数,容斥)

GuGuFishtion \[ Time Limit: 1500 ms\quad Memory Limit: 65536 kB \] 题意 给出定义\(Gu(a, b) = \frac{\phi(ab)}{\phi(a)\phi(b)}\) 求出\(\sum_{a=1}^{m}\sum_{b=1}^{n}Gu(a,b) (mod p)\) 思路 首先对于欧拉函数,我们知道欧拉函数的朴素式...

weixin_30263277的博客 202

【YOLOv8改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力

【YOLOv8改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力 (论文笔记+引入代码)。LSKNet能够动态调整其大的空间接收场,以更好地模拟遥感场景中各种对象的范围上下文。据我们所知,这是首次在遥感目标检测领域探索大型和选择性核机制。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 2864

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

hdu 6390 (欧拉函数+莫比乌斯反演)

给出一个表达式   求解 首先,设p为a,b共同的质因数 phi(n) = p^α = (p-1)*p^(α-1) phi(ab) = (p-1)*p^(α1+α2-1) phi(a) = (p-1)*p^(α1-1) phi(b) = (p-1)*p^(α2-1) phi(ab)/(phi(a)*phi(b)) = p-1/p; 这样原式子就能转化为 若p只为a或b的质因子,...

Avalon_cc的博客 1163

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

莫比乌斯反演 hdu6390

hdu多校第7场1005 GuGuFishtion 好久没做莫比乌斯反演了,推柿子走起ooo ,解释:用phi[x]=x*(1-质因子倒数的积)来证 ,令i=ik,j=jk ,d求和提前 ,令i=id,j=jd,并假设n&lt;m,令kd=T;交换求和顺序,则k为T的约数 ,令 ,考虑到Fuck是积性函数 用线性筛预处理Fuck前缀和加上分块即可O(T*n*(sqrt(...

animalcoder 1132

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

HDU 6390 GuGuFishtion 莫比乌斯反演+欧拉函数性质

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=6390 目录题意化简Code 题意 ∑a=1m∑b=1nGu(a,b)\sum_{a=1}^{m}\sum_{b=1}^{n}Gu(a,b)a=1∑m​b=1∑n​Gu(a,b) Gu(a,b)=ϕ(ab)ϕ(a)ϕ(b)Gu(a,b)=\frac{\phi(ab)}{\phi(a)\phi(b)}Gu(a,b)=ϕ(a)ϕ(b)ϕ(ab)​ 化简 首先考虑对Gu函数进行变换,利用到欧拉函数的性质ϕ(pk)=(p

kaka03200的博客 220

HDU 6390 GuGuFishtion(数论+莫比乌斯反演)

Description 求∑a=1m∑b=1nφ(ab)φ(a)φ(b)∑a=1m∑b=1nφ(ab)φ(a)φ(b)\sum\limits_{a=1}^m\sum\limits_{b=1}^n\frac{\varphi(ab)}{\varphi(a)\varphi(b)} Input 第一行一整数TTT表示用例组数,每组用例输入三个整数n,m,pn,m,pn,m,p,其中ppp是素数 (...

ZSQ 402

2018 Multi-University Training Contest 7 HDU6390 GuGuFishtion【数论欧拉函数|gcd|莫比乌斯】

GuGuFishtion Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Description Today XianYu is too busy with his homework, but the boring GuGu is still distu...

Dust_heart的博客 1194

hdu6390GuGuFishtion【数论】

GuGuFishtion Time Limit: 3000/1500 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1204Accepted Submission(s): 459 Problem Description Toda...

weixin_30401605的博客 178

HDU 6390 GuGuFishtion(欧拉函数+莫比乌斯反演)

GuGuFishtion Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1094    Accepted Submission(s): 405   Problem Description Toda...

记录一些思考的过程。 654

HDU - 6390 GuGuFishtion 【欧拉函数性质 + 逆元预处理 + 莫比乌斯】

题意:给定nnn,mmm,ppp,求 (∑a=1m∑b=1nϕ(ab)ϕ(a)ϕ(b))(modp)(∑a=1m∑b=1nϕ(ab)ϕ(a)ϕ(b))(modp)(\sum\limits_{a=1}^m\sum\limits_{b=1}^n\frac{\phi(ab)}{\phi(a)\phi(b)})\pmod p 其中: 1≤m,n≤1,000,0001≤m,n≤1,000,0001\l...

Anxdada -- 我等风来也等你 391

【2018 Multi-University Training Contest 7】GuGuFishtion(莫比乌斯反演)

Problem Description题目链接 Today XianYu is too busy with his homework, but the boring GuGu is still disturbing him!!!!!! At the break time, an evil idea arises in XianYu’s mind. ‘Come on, you xxxxxxx ...

Coldfresh的博客 498

GuGuFishtion

 转载地址     线性求逆元原理: #include &lt;cstdio&gt; #include &lt;bits/stdc++.h&gt; #include &lt;map&gt; #include &lt;cstring&gt; #include &lt;algorithm&gt; using namespace std; #define mst(a,b) mems...

海绵的博客 316

【2018多校HDU - 6390 GuGuFishtion】(莫比乌斯反演+欧拉函数+推公式)

http://acm.hdu.edu.cn/showproblem.php?pid=6390 题意: 其中: 1≤m,n≤1,000,0001≤m,n≤1,000,000 max(m,n)&lt;p≤1,000,000,007max⁡(m,n)&lt;p≤1,000,000,007 并保证p为质数 分析: #pragma warning(disable:4996) #inc...

running_acmer的博客 472

HDU 6390 GuGuFishtion 【gcd+欧拉函数+mobius函数】

题目链接 题意:已知Gu(a,b)=ϕ(ab)ϕ(a)ϕ(b)Gu(a,b)=ϕ(ab)ϕ(a)ϕ(b)G_u(a,b)=\frac{\phi(ab)}{\phi(a)\phi(b)} 求(∑a=1m∑b=1nGu(a,b))(modp)(∑a=1m∑b=1nGu(a,b))(modp)(\sum_{a=1}^{m}\sum_{b=1}^{n}G_u(a,b))\pmod p 先推公式……必...

hxh的博客 291

HDU 6390 GuGuFishtion

题目:点击打开链接 题意:  分析:展开欧拉函数化简得到,我们要处理的就是gcd(a,b)=igcd(a,b)=i时的G(a,b)值G(a,b)值,以及有多少对a,b的gcd为i,G(a,b)=ϕ(i)/i,G(a,b)=ϕ(i)/i,预处理欧拉函数和逆元即可。对于一个数i,在a∈[1,n],b∈[1,m]的范围内,设f[i]为gcd为(i,2i,3i...)的对数,显然 : f[i]=[n/i...

常胜将军的博客 326

hdu6390(欧拉线性塞+逆元表)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6390 思路:若N是质数p的k次幂(即N=p^k),φ(n)=p^k-p^(k-1)=(p-1)p^(k-1)。若m,n互质,φ(mn)=(m-1)(n-1)=φ(m)φ(n)。运用欧拉函数这两个性质可以将问题化简成求最大公约数是1~min(m,n)这些数的个数。 #include &lt;cst...

llmxby 698

hdu 6390 GuGuFishtion 欧拉函数性质+容斥

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6390   Gu(a,b)=ϕ(ab)/ϕ(a)ϕ(b) 现在求a从1到n,b从1到m的Gu(a,b)的总和 由欧拉函数的表达式,n可分解为p1^a1*p2^a2*...pn^an 则φ(n)=∏(pi-1)(pi^(ai-1)) 将a和b分解质因数,设a和b都有质因数p,a中一项为p^a1...

大乐的博客 443
上一篇: 线性时间筛选n个模M的逆元的方法及证明
下一篇: Sum Of Gcd(欧拉函数+莫队算法详解)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值