poj 1061 扩展欧几里德同余方程求解
2015-10-06 10:29
375 查看
摘要写在一瞪眼。
#include<iostream> using namespace std; long long exgcd(long long a,long long b,long long &k,long long &t) { if (b==0) { k=1; t=0; return a; } else { long long tp_gcd; tp_gcd=exgcd(b,a%b,k,t); long long temp; temp=k; k=t; t=temp-(a/b)*t; return tp_gcd; } } // (n-m)*t-k*l=x-y // --> a*x-b*y=c a=n-m,b=l; // -->使用扩展欧几里得能够求得a*x0-b*y0=gcd(a,b),d=gcd(a,b) 的解x0,y0 // x0*(l/d)就得到了第2行中,x的一个特解x' // x=x'+k*(l/d) int main() { long long x,y,n,m,l; long long x0,y0; while(cin>>x>>y>>m>>n>>l) { long long d=exgcd(n-m,l,x0,y0); //d是gcd(a,b) if((x-y)%d!=0) cout<<"Impossible"<<endl; else { x0*=(x-y)/d; x0=(x0%(l/d)+(l/d))%(l/d); cout<<x0<<endl; } } return 0; }
相关文章推荐
- 字符串去空格
- UVA-12657 Boxes in a Line (双向链表)
- MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
- Java的字符串分割的不同实现
- Java的字符串分割的不同实现
- 第一次写博客
- UVA - 10763 Foreign Exchange
- window操作系统快捷键
- 关于C#中params关键字的作用及用法
- Linux 爬虫
- WPF中使用ReportViewer报表
- LeanCloud获取最近会话列表和获取最后一条聊天记录
- 阅读科研文献心得分享(二)
- mybatis 3如何防止SQL注入
- 使用rand()与srand()产生随机数
- [LeetCode] 033. Search in Rotated Sorted Array (Hard) (C++)
- java中的内部类总结
- MyEclipse10破解replaceJar一步报错解决方案
- C++单链表2
- 超实用的8个Linux命令行性能监测工具