数论-欧几里得最大公约数- same gcd
same gcd
题解
题意
给定a,b,问有多少个x(0<=x<b)满足gcd(a,b)=gcd(a+x,b)
思路
d = g c d ( a , b ) = g c d ( a + x , b ) → 1 = g c d ( a + x d , b d ) d=gcd(a,b)=gcd(a+x,b)\to 1=gcd(\frac{a+x}{d},\frac{b}{d}) d=gcd(a,b)=gcd(a+x,b)→1=gcd(da+x,db)
a + x d ∈ [ a d , a d + b d ) \frac{a+x}{d}\in[\frac{a}{d},\frac{a}{d}+\frac{b}{d}) da+x∈[da,da+db)
题目转化成,求在上述范围内与b/d互质的个数,进而转化成求b/d的欧拉函数
e u l e r s [ 1 , b d ) ≡ e u l e r s [ a d , a d + b d ) eulers[1,\frac{b}{d})\equiv eulers[\frac{a}{d},\frac{a}{d}+\frac{b}{d}) eulers[1,db)≡eulers[da,da+db)
代码
#include <iostream>using namespace std;
typedef long long LL;LL gcd(LL a, LL b) // 欧几里得算法
{return b ? gcd(b, a % b) : a;
}LL phi(LL x){LL res=x;for(int i=2;i<=x/i;i++){if(x%i==0)res=res/i*(i-1);while(x%i==0)x/=i;}if(x!=1)res=res/x*(x-1);return res;
}int main()
{int t;cin>>t;while(t--){LL a,b;//注意数据范围cin>>a>>b;cout<<phi(b/gcd(a,b))<<'\n';//题目分析转换完之后,代码实现其实就是copy模版}return 0;
}
数论-欧几里得最大公约数- same gcd相关推荐
- [2016 NUIST 程序设计竞赛] B. 欧几里得的公约数
描述 古希腊数学家欧几里得被称为"几何之父",他最著名的著作<几何原本>是欧洲数学的基础,提出五大公式,欧几里得几何,被广泛的认为是历史上最成功的教科书.欧几里德算法又 ...
- 数学--数论--欧几里得定理和拓展欧几里得定理
欧几里得定理: gcd(a, b) = gcd(b, a%b) 证明: 我们首先约定:m = gcd(a,b) , n = gcd(b, q) , a = b*p +q.(这里的gcd含义跟上面一样, ...
- 数论:欧几里得与扩展欧几里得算法
文章目录 欧几里得算法 历史发展 表示 证明 代码 例题 扩展欧几里得算法 表示 求解方法 代码 其他定理: 例题 欧几里得算法 历史发展 欧几里得算法用来求得两个数的最大公约数,大约公元前300年首 ...
- 欧几里得最大公约数算法
本文地址:http://www.cnblogs.com/HarryGuo2012/p/4785167.html 最大公约数 想必大家小学就学过什么事最大公约数吧,现在给出一个数学上的定义:定义$g$是 ...
- 数论 欧几里得与扩展欧几里得
欧几里得算法: 求a,b的最大公约数 gcd(a,b)= gcd(b,a%b) ll gcd(ll a,ll b) {return b==0?a:gcd(b,a%b); } 扩展欧几里得算法: 如果a ...
- 数论--欧几里得和扩展的欧几里得定理
欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd( ...
- 证明欧几里得最大公约数算法
描述 如果p和q的最大公约数是r,那么q和p%q的最大公约数也是r. 证明 讨论范围p q r都是自然数 必然存在p = mq + n (m n为自然数), 其中n = p % q. 等式两边除以r得 ...
- acm数论之欧几里得gcd
1.欧几里得定理 同余定理的公式:(a+b)%mod=(a%mod+b%mod)%mod (a*b)%mod=(a%mod*b%mod)%mod 扩展欧几里得也有自己的一个公式:a*x+b*y=gcd ...
- 欧几里得定理与扩展欧几里得定理
欧几里的定理(辗转相除法): gcd(a,b) = gcd(b,a%b) gcd(a,b)表示a,b的最大公约数 证明: 设 a > b c = a%b a = k * b + c (k为某个整 ...
最新文章
- 【html 及 HTML5所有标签汇总】★★★
- mysql报错3534_win7下安装MYSQL报错:MYSQL 服务无法启动的3534问题
- AE中获得datalayer所对应的data的文件路径和文件名
- 上采样(放大图像)和下采样(缩小图像)(最邻近插值和双线性插值的理解和实现)
- wkhtmltopdf 水印 背景_wkhtmltopdf + echarts 转 PDF
- Delphi2CS破解 Delphi 转换C#
- 洛谷P5108 仰望半月的夜空(后缀数组)
- python实现雪花动态图_如何通过雪花算法用Python实现一个简单的发号器
- SpringBoot 2.0参数校验Hibernate Validator
- Adobe Illustrator CS3
- Air202掉坑日记(1)——烧录固件(AT版本)
- Swing组件与监听器
- Activity-的-36-大难点,你会几个?,android游戏开发实践指南
- Serial Programming HOWTO
- mysql的存储模型_一种BIM模型数据的数据库存储格式的制作方法
- Linux系统 PDF转图片
- Ktor: Kotlin Web后端框架 快速开始入门
- 搭建一个简单的知识问答系统
- 盖档案骑缝章的样本_骑缝章没盖全合同生效吗--最新范本
- 【03】尽可能使用const