​前言

两个月了,我终于更了……

这两个月忙(chen)于(mi)内(xiang)卷(le),现在终于出新文章啦,(也算兑现了当初的出数论题文章的承诺)~

不说废话了,今天给大家介绍一道CF/洛谷上的数论题———CF1295D Same GCDs/1295D #81 Problem D。

这是一道相当不错的题,很考验选手的思维能力以及数学基础,先贴个题面~

洛谷题目传送门 or Codeforces题目传送门​​​​​​​​​​​​​​​​​​


题目描述

You are given two integers aaa and mmm . Calculate the number of integers xxx such that 0≤x<m0≤x<m0≤x<m and gcd(a,m)gcd(a, m)gcd(a,m) = gcd(a+x,m)gcd(a + x, m)gcd(a+x,m).

Note: gcd(a, b) is the greatest common divisor of aaa and bbb .

输入格式

The first line contains the single integer TTT(1≤T≤501≤T≤501≤T≤50) — the number of test cases.

Next T lines contain test cases — one per line. Each line contains two integers aaa and mmm (1≤a<m≤10101≤a<m≤10^{10}1≤a<m≤1010) .

输出格式

Print TTT integers — one per test case. For each test case print the number of appropriate xxx -s.

题意翻译

求 ∑i=1n[gcd(a,m)=gcd(a+x,m)]\displaystyle\sum_{i=1}^n[ gcd(a,m)=gcd(a+x,m) ]i=1∑n​[gcd(a,m)=gcd(a+x,m)]

多组测试数据, T≤50,1≤a<m≤10T≤50, 1≤a<m≤10T≤50,1≤a<m≤10

输入输出样例

输入 #1
3
4 9
5 10
42 9999999967
输出 #1
6
1
9999999966

​说明/提示

In the first test case appropriate xxx -s are [0,1,3,4,6,70, 1, 3, 4, 6, 70,1,3,4,6,7].

In the second test case the only appropriate xxx is 000 .


解题思路

那么,看完题目,第一反应肯定是这题正解绝对不是用暴力,真要暴力的话你会在某Online Judge得到优秀的40pts
所以,我们要费点功夫,处理一下这个式子。

前置芝士 ———欧拉函数

是的,这题也绕不开欧拉,那么,什么是欧拉函数呢?
定义:在数论中,对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目。
贴张书照———

(出自长乐一中董永建老师团队所撰书籍《信息学奥赛一本通高效进阶》,侵删。)
那么,简单来讲,欧拉函数φ(n)\varphi(n)φ(n)就表示小于nnn又与nnn互质的数的数量。
几个基本性质:

  1. 设nnn=pkp^{k}pk,其中n,kn,kn,k为正整数,ppp为质数,则有φ(n)=pk−pk−1\varphi(n)=p^{k}-p^{k-1}φ(n)=pk−pk−1
  2. 设n,mn,mn,m为正整数,gcd(n,m)gcd(n,m)gcd(n,m)=1,则有φ(nm)=φ(n)∗φ(m)\varphi(nm)=\varphi(n)*\varphi(m)φ(nm)=φ(n)∗φ(m)

如何计算φ(n)\varphi(n)φ(n)呢?请看:φ(n)=n∗∑i=1n(1−1pi)\varphi(n)=n*\displaystyle\sum_{i=1}^n(1-\frac{1}{p_i})φ(n)=n∗i=1∑n​(1−pi​1​)
用代码实现即为:

long long ans=n;
for (int i=2;i<=sqrt(n);i++) {//寻找因数if (n%i==0) n/=i,ans=ans/i*(i-1);//这里做去分母处理,否则会因精度问题WAwhile (n%i==0) n/=i;//除尽此因数if (n>1) {//计算时有可能会出现一个未除的m的质因子,出现m>1 ,说明还剩一个质因子没除ans=ans/n*(n-1);}cout << ans << endl;
}

现在,切入正题~

当然,只有欧拉函数是不足以解这题的,还要用到关于gcdgcdgcd的两个定理:

  1. ∀n,m∈N,m≤n,gcd(n,m)=gcd(m,n−m)=gcd(n,n−m)(更相减损术)\forall n,m \in \Nu,m≤n,gcd(n,m)=gcd(m,n-m)=gcd(n,n-m)(更相减损术)∀n,m∈N,m≤n,gcd(n,m)=gcd(m,n−m)=gcd(n,n−m)(更相减损术)
  2. ∀n,m∈N\forall n,m \in \Nu∀n,m∈N,设gcd(n,m)=kgcd(n,m)=kgcd(n,m)=k,gcdgcdgcd ( nk\frac{n}{k}kn​,mk\frac{m}{k}km​) === 111

开始推导:
设gcd(a,m)=gcd(a+x,m)=k设gcd(a,m)=gcd(a+x,m)=k设gcd(a,m)=gcd(a+x,m)=k
则gcd(a+xk,mk)=1则gcd( \frac{a+x}{k},\frac{m}{k})=1则gcd(ka+x​,km​)=1
分以下两种情况讨论:分以下两种情况讨论:分以下两种情况讨论:
1.当a+xk<mk时:1.当\frac{a+x}{k}<\frac{m}{k}时:1.当ka+x​<km​时:
则求[ak,mk)这个区间内与mk互质的数则求[\frac{a}{k},\frac{m}{k})这个区间内与\frac{m}{k}互质的数 则求[ka​,km​)这个区间内与km​互质的数
2.当a+xk>mk时:2.当\frac{a+x}{k}>\frac{m}{k}时:2.当ka+x​>km​时:
∵gcd(a+xk,mk)=1\because gcd( \frac{a+x}{k},\frac{m}{k})=1∵gcd(ka+x​,km​)=1
∴gcd(a+x−mk,mk)=1\therefore gcd( \frac{a+x-m}{k},\frac{m}{k})=1∴gcd(ka+x−m​,km​)=1
则求[0,ak)这个区间内与mk互质的数则求[0,\frac{a}{k})这个区间内与\frac{m}{k}互质的数则求[0,ka​)这个区间内与km​互质的数
结合以上两种情况知:即求[0,mk)这个区间内与mk互质的数结合以上两种情况知:即求[0,\frac{m}{k})这个区间内与\frac{m}{k}互质的数结合以上两种情况知:即求[0,km​)这个区间内与km​互质的数
即求φ(mk)即求\varphi(\frac{m}{k})即求φ(km​)
推导完毕推导完毕推导完毕
现在,我们通过式子变形,明确了我们解决该题的方法。那么,问题就很简单了。这道看似无从下手的题,转化成了求一个欧拉函数的问题。
好了,上代码,解释都在代码里:

#include <bits/stdc++.h>
using namespace std;
int t;
long long a, m;
int main() {cin >> t;while (t--) {scanf("%lld%lld",&a,&m);long long k = __gcd(a, m);//gcd函数m/=k;//除去最大公约数long long ans=m;//记得开long longfor (int i=2;i<=sqrt(m);i++) {//欧拉函数模板if (m%i==0) m/=i,ans=ans/i*(i-1);while (m%i==0) m/=i;}if (m>1) {ans=ans/m*(m-1);}cout << ans << endl; }return 0;
}

完结撒花……(等我先总个结)


总结

说实话,我在模拟赛做这题时,真的很懵,后来也是推导了很久才想出正解(蒻)。这题考验选手的知识储备,思维能力以及熟练运用知识的能力,对码力要求其实并不高,是一道数论好题。这题也可以用其他方法解,比如莫比乌斯反演,在我接下来的文章可能也会提到。最后,祝大家(当然也包括本蒟蒻)CSP RP++!
(再等等)
大家觉得CSP各题会出什么样的算法呢?(求各路大佬为本蒟蒻指点迷津qwq)

数论 GCD 最大公约数 欧拉函数经典题 洛谷 CF1295D Same GCDs Codeforces1295D相关推荐

  1. (hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)

    题目: The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...

  2. hdu 1286 找新朋友 欧拉函数模版题

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Des ...

  3. 数论(四)——欧拉函数

    目录 欧拉函数 用公式求欧拉函数 筛法求欧拉函数 欧拉定理 欧拉函数 定义: 在数论中,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目. 注: 1.φ(1)=1 2.互质是公约数只有1 ...

  4. GCD - Extreme(欧拉函数变形)

    题目链接:https://vjudge.net/problem/UVA-11426 题目大意: 给出整数n∈[2,4000000],求解∑gcd(i,j),其中(i,j)满足1≤i<j≤n. 的 ...

  5. (数论)51NOD 1136 欧拉函数

    对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi( ...

  6. TOJ 3990.I guess the gift is a bag! II(质因数、欧拉函数好题)

    题目链接 : http://acm.tju.edu.cn/toj/showp3990.html Coach Yu has lots of bags, every bag has its number. ...

  7. HDU 5597 GTW likes function(规律+欧拉函数模板题)——BestCoder Round #66(div.1 div.2)

    GTW likes function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Oth ...

  8. Farey Sequence(欧拉函数板子题)

    题目链接:http://poj.org/problem?id=2478 Farey Sequence Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  9. 线性筛法 欧拉筛c语言,[洛谷P3383][模板]线性筛素数-欧拉筛法

    Hibernate Hql 总结 1.from子句 Hibernate中最简单的查询语句的形式如下: from eg.Cat该子句简单的返回eg.Cat类的所有实例. 通常我们不需要使用类的全限定名, ...

最新文章

  1. RTX组织架构刷新出现了问题
  2. AI视觉组培训第二弹——入门篇
  3. debain mariadb10配置root
  4. 人工智能:第五章 计算智能(2)
  5. centos8 改主题颜色 黑色改白色
  6. 3.1 《数据库系统概论》SQL概述及数据定义(模式SCHEMA、表TABLE、索引INDEX)
  7. uCOS任务堆栈的深入分析(转)
  8. 多类线性分类器算法原理及代码实现 MATLAB
  9. 51CTO下载专题有奖征集建议:您的期待,我们的方向!
  10. [技术分享] 融云开发案例核心代码分享
  11. 智能擦窗机器人的社会意义_告别传统清扫方式 AWE玻妞展示擦窗机器人
  12. 图像算法常用图片Lena
  13. Vue 中如何引入第三方 JS 库
  14. 网吧web电影服务器系统,网吧电影服务器如何安装制作?
  15. IP地址,子网掩码,网络地址,直接广播地址,网络位主机位的计算
  16. Ubuntu16.04 LTS无法开启无线网开关的解决方法(联想Y7000)
  17. 如何用 Ps 制作毛玻璃穿透效果?
  18. Nvidia Deepstream极致细节:3. Deepstream Python RTSP视频输出显示
  19. 设计必备的配色工具03
  20. (转)如何应用MTCNN和FaceNet模型实现人脸检测及识别

热门文章

  1. 视频教程-JavaWeb从入门到实战,超全知识点+仿京东项目-Java
  2. 手工去掉迅雷最新版5.9.15.1274广告
  3. 英特尔10纳米Agilex FPGA核心技术全解读
  4. 就只想要几个c币,单独够买又不行,哎
  5. 智能化整体图例,布线、安防、广播会议、电视、楼宇、消防、电气图的图例【转自微信公众号弱电课堂】
  6. linux中dare命令,dare
  7. 语义分割一些数据预处理的方式
  8. Scanner:扫描器
  9. 笔记︱基于网络节点的node2vec、论文、算法python实现
  10. 2021华为3.19面试惨痛经验教训