欧几里得扩展应用
来源:互联网 发布:淘宝卖家手机号采集 编辑:程序博客网 时间:2024/06/14 07:25
X问题 HDU - 1573& Strange Way to Express Integers POJ - 2891
1. 题意
- 一个数模
mi 等于ai ,第一个问题是求最小的,第二个问题是求x<=n有多少个
2. 分析
合并两个模数
假设
则有
利用欧几里得扩展求出
3.参考代码
X问题 HDU - 1573
const int maxn = 100;int aa[maxn];int bb[maxn];int N,M;int ex_gcd(int a,int b,int &x,int &y){ if(b==0) { x = 1; y = 0; return a; } LL c = ex_gcd(b,a%b,y,x); y -= a/b*x; return c;}int main(void){ int T; cin>>T; while(T--) { cin>>N>>M; int A,B; for(int i = 0; i < M; ++i) cin>>aa[i]; for(int i = 0;i < M; ++i) cin>>bb[i]; A = aa[0]; B = bb[0]; bool F = true; for(int i = 1; i < M; ++i) { int x,y; int d = ex_gcd(A,aa[i],x,y); int c = bb[i] - B; if(c%d!=0) { F = false; break; } c /= d; x *= c; aa[i] /= d; x = (x%aa[i]+aa[i])%aa[i]; B = B + x * A; A = A*aa[i]; B = (B%A+A)%A; } if(!F) cout<<0<<endl; else { if(B==0) cout<<N/A<<endl; else cout<< N/A+((N-N/A*A)>=B?1:0)<<endl; } }}
Strange Way to Express Integers POJ - 2891
using namespace std;long long exgcd(long long m,long long n,long long &x,long long &y){ long long x1,y1,x0,y0; x0=1; y0=0; x1=0; y1=1; x=0; y=1; long long r=m%n; long long q=(m-r)/n; while(r) { x=x0-q*x1; y=y0-q*y1; x0=x1; y0=y1; x1=x; y1=y; m=n; n=r; r=m%n; q=(m-r)/n; } return n;}int main(){ int n; long long a1,r1,a2,r2,c,d,x,y; bool flat; while(scanf("%d",&n)!=EOF) { flat=false; scanf("%lld%lld",&a1,&r1); for(int i=1;i<n;i++) { scanf("%lld%lld",&a2,&r2); if(flat)continue; c=r2-r1; d=exgcd(a1,a2,x,y); if(c%d) { flat=true; continue; } x*=c/d; a2/=d; x=(x%a2+a2)%a2; r1=r1+x*a1; a1*=a2; } if(flat)puts("-1"); else printf("%lld\n",r1); } return 0; }
阅读全文
0 0
- 扩展欧几里得及其应用
- 扩展欧几里得应用分析
- 扩展欧几里得的应用
- 欧几里得扩展应用
- 一个欧几里得扩展的应用
- 扩展欧几里得算法及其应用
- 扩展欧几里得算法及其应用
- 扩展欧几里得算法及其应用
- 扩展欧几里得算法 与 应用
- 扩展欧几里得算法及其应用
- 扩展欧几里得定理及其应用
- 扩展欧几里得算法及其应用
- hdu_1222_欧几里得_gcd简单应用_欧几里得扩展性质
- SGU 106 The Equation 扩展欧几里得应用
- 扩展欧几里得算法及其相关应用
- 扩展的欧几里得算法的应用
- 再探扩展欧几里得算法的应用
- 【欧几里得&扩展欧几里得】
- 尝试使用Construct2制作小游戏
- 阿里大于jar包导入maven。记录这个坑
- 项目实践——消息队列de使用
- 菜鸟教程python基础总结
- HBuilder常用快捷键
- 欧几里得扩展应用
- 集合体系
- 2017107网页使用ajax与程序通信
- Ubuntu 16.04 隐藏登录界面中的用户
- C++数值类型与string的相互转换
- 打印100~200 之间的素数
- HBuilder 常用快捷键
- Codeforces 804D Expected diameter of a tree(树的直径)
- Linux之Xampp外网访问不了