noip2012同余方程 扩展欧几里德
来源:互联网 发布:sql forceseek 编辑:程序博客网 时间:2024/05/17 15:19
好久没发博客了呀
下周就noip考试了,感觉很多应该要学的知识点都没学,而且又无心写作业,把扩展欧几里德看了一遍。
例题:noip2012同余方程
有几个需要记住的点在程序中作了标记,下面写清楚道理,忘记的话可以现推
//1
ax+by=gcd(a,b)
bx'+(a%b)y'=gcd(b,a%b)
根据欧几里德定理这两个等式右半部分相等,所以
ax+by=bx'+(a%b)y'=bx'+(a-b[a/b])y'=ay'+b(x'-[a/b]y')
x=y' y=(x'-[a/b]y')
//2
求出特解后的推导
ax0+by0=ax1+by1=gcd
a(x1-x0)=b(y1-y0)
设a'=a/gcd b'=b/gcd //此时a'与b'互质
a'(x1-x0)=b'(y1-y0)
x1-x0是b'的倍数 (我也不知道为什么)
设x1-x0=kb'
x1=x0+kb'=x0+b/gcd*k
同理y1=y0+a/gcd*k
此题有解时gcd=1,所以x-x0=kb;
#include<iostream>using namespace std;int gcd(int a,int b,int &x,int &y){if(b==0){x=1;y=0;return a;}int ans=gcd(b,a%b,x,y);int temp=x;x=y;y=temp-(a/b)*y;//1return ans;}int main(){int x,y,a,b;cin>>a>>b;if(gcd(a,b,x,y)!=1){cout<<-1<<endl;return 0;}x=x%b;//2x+=(x<0)*b;cout<<x<<endl;return 0;}
0 0
- noip2012同余方程 扩展欧几里德
- 【扩展欧几里德】[NOIP2012]同于方程 mod
- noip2012 同余方程 (扩展欧几里得)
- 扩展欧几里得noip2012同余方程
- 数论,扩展欧几里德算法,同余方程
- NOIP2012 同余方程
- 【noip2012】同余方程
- NOIP2012 同余方程
- noip2012同余方程
- 【NOIP2012】同余方程
- [NOIP2012] 同余方程
- NOIP2012 同余方程
- [noip2012]: 同余方程
- NOIP2012同余方程
- [NOIP2012]同余方程
- [NOIP2012]同余方程
- 【Noip2012】同余方程
- NOIP2012 同余方程
- 洛谷 P1772 [ZJOI2006]物流运输
- Linux磁盘管理命令
- Session实现验证码登录
- pdo查询数据库
- 简单工厂
- noip2012同余方程 扩展欧几里德
- POJ1789 Truck History 最小生成树
- Stark_【快排】示例讲解
- Android使用Pull解析方式解析xml文件
- VBA工程中的Modules与Class Modules区别
- see
- 求教,一起来探讨一下
- 基于DSP的Bluetooth嵌入式系统应用
- [Python]网络爬虫(三):异常的处理和HTTP状态码的分类