拓展欧几里得算法模板
2015-08-08 22:38
405 查看
暂时还不明白,留着以后慢慢明白。
#include<map> #include<vector> #include<cstdio> #include<iostream> #include<cstring> #include<string> #include<algorithm> #include<cmath> #include<stack> #include<queue> #include<set> #define inf 0x3f3f3f3f #define mem(a,x) memset(a,x,sizeof(a)) using namespace std; typedef long long ll; typedef pair<int,int> pii; inline ll in() { ll res=0;char c; while((c=getchar())<'0' || c>'9'); while(c>='0' && c<='9')res=res*10+c-'0',c=getchar(); return res; } ll e_gcd(ll a,ll b,ll &x,ll &y) { if(b==0) { x=1; y=0; return a; } ll ans=e_gcd(b,a%b,x,y); ll tmp=x; x=y; y=tmp-a/b*y; return ans; } ll cal(ll a,ll b,ll c) { ll x,y; ll gcd=e_gcd(a,b,x,y); if(c%gcd!=0)return -1; x*=c/gcd; b/=gcd; if(b<0)b=-b; ll ans=x%b; if(ans<=0)ans+=b; return ans; } int main() { ll a,b; while(~scanf("%I64d%I64d",&a,&b)) { ll ans=cal(a,b,1); if(ans==-1)puts("sorry"); else printf("%I64d %I64d\n",ans,(1-ans*a)/b); } return 0; }
相关文章推荐
- POJ 2828 Buy Tickets
- 前端技术-HTML页面的加载
- [NewCoder]复杂链表的复制
- Windows和Linux中android SDK是否通用的问题
- Android Support兼容包详解
- QT5---应用程序发布
- 20150807解题报告
- Linux中Eclipse开发android的配置问题
- pring+SpringMVC+Mybatis
- 第三方登录之QQ
- hdu 4006 线段树插入与单点更新
- I/O 多路复用之 Event Poll
- Longest Substring Without Repeating Characters
- [题解+总结]20150808
- Android中的Parcelable接口
- hdu 1506 dp
- 构造Linux 内核树
- asp.net 发送 xml post请求和接收 xml post请求时出现(500) 内部服务器错误(WebClient学习笔记)
- Android应用程序构成
- 基于opencv的图像梯形畸变(透视)校正