这两题都是求解同余方程,并要求出最小正整数解的

对于给定的Ax=B(mod C) 要求x的最小正整数解

首先这个式子可转化为 Ax+Cy=B,那么先用exgcd求出Ax+Cy=gcd(A,C)的解x

然后这个式子的一个特解就是 (B/gcd(A,C))* x

要注意如果gcd(A,C)无法整除B,那么这个式子无解

然后是求出最小整数解

Ax+Cy=B 方程的通解是 x+k*C/gcd(A,C),

另s=C/gcd(A,C)

所以最小整数解是(x%s+s)%s

青蛙题

/*
x+km=y+kn(mod L) x+km+t*L=y+kn
k(m-n)+(x-y)=-t*L
k(n-m)-(x-y)=t*L 要求出k
即(n-m)k = x-y(mod L)
那么(x-y)%gcd(n-m,L)==0 如果(x-y)%gcd(n-m,L)!=0,那么就是无解 用exgcd(n-m,l,x,y)出k0即可
答案是(x-y)/gcd(n-m,L)*k0+l/gcd(n-m,l)
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define ll long long
ll x,y,m,n,L;
ll exgcd(ll a,ll b,ll &x,ll &y){
if(b==){x=;y=;return a;}
ll d=exgcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
int main(){
while(cin>>x>>y>>m>>n>>L){
ll a=n-m,b=L,c=x-y,k,u;
ll d=exgcd(a,b,k,u);
if(c%d!=){
puts("Impossible");
continue;
}
k=k*(c/d);//该方程特解
ll m=b/d;
printf("%lld\n",(k%m+m)%m);
}
}

looop题

/*
Cx=B-A(mod L)
转化为求同余方程
Cx+Ly=B-A
d=gcd(C,L)
d|B-A,则有解
exgcd(C,L,x,y)解得x
先求出一个特解x=(B-A)/d*x
然后再求最小整数解即可
*/
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define ll long long
ll exgcd(ll a,ll b,ll &x,ll &y){
if(!b){x=,y=;return a;}
ll d=exgcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
int main(){
ll A,B,C,k,L;
while(cin>>A>>B>>C>>k && (A||B||C||k) ){
L=;
for(int i=;i<=k;i++)
L*=;
ll d,x,y;
d=exgcd(C,L,x,y);
if((B-A)%d!=){
puts("FOREVER");
continue;
} x=(B-A)/d*x;
ll s=L/d;
cout<<(x%s+s)%s<<endl;
}
}

exgcd求解同余方程的最小正整数解 poj1061 poj2115的更多相关文章

  1. ex_gcd求不定方程的最小正整数解

    #include<bits/stdc++.h> using namespace std; int gcd(int a,int b) {return b?gcd(b,a%b):a;} int ...

  2. POJ - 1061 青蛙的约会 扩展欧几里得 + (贝祖公式)最小正整数解

    题意: 青蛙 A 和 青蛙 B ,在同一纬度按照相同方向跳跃相同步数,A的起点为X ,每一步距离为m,B的起点为Y,每一步距离为 n,一圈的长度为L,求最小跳跃步数. 思路: 一开始按照追击问题来写, ...

  3. [NBUT 1224 Happiness Hotel 佩尔方程最小正整数解]连分数法解Pell方程

    题意:求方程x2-Dy2=1的最小正整数解 思路:用连分数法解佩尔方程,关键是找出√d的连分数表示的循环节.具体过程参见:http://m.blog.csdn.net/blog/wh2124335/8 ...

  4. POJ - 1061 扩展欧几里德算法+求最小正整数解

    //#pragma comment(linker, "/STACK:1024000000,1024000000") //#pragma GCC optimize(2) #inclu ...

  5. 【poj 1061】青蛙的约会(数论--拓展欧几里德 求解同余方程)

    题意:已知2只青蛙的起始位置 a,b 和跳跃一次的距离 m,n,现在它们沿着一条长度为 l 的纬线(圈)向相同方向跳跃.问它们何时能相遇?(好有聊的青蛙 (΄◞ิ౪◟ิ‵) *)永不相遇就输出&quo ...

  6. 【poj 2115】C Looooops(数论--拓展欧几里德 求解同余方程 模版题)

    题意:有一个在k位无符号整数下的模型:for (variable = A; variable != B; variable += C)  statement; 问循环的次数,若"永不停息&q ...

  7. 【hdu 1573】X问题(数论--拓展欧几里德 求解同余方程组的个数)

    题目:求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], -, X mod a[i] = b[i] ...

  8. 扩展欧几里得求解同余方程(poj 1061)

    设方程 ax + by = c , 若 gcd(a,b) 是 c的因子(记作gcd(a,b)|c)则方程有解,反之无解. 其中x0,y0是方程的一组特解 , d = gcd(a,b), poj1061 ...

  9. 扩展欧几里得(exgcd)-求解不定方程/求逆元

    贝祖定理:即如果a.b是整数,那么一定存在整数x.y使得ax+by=gcd(a,b).换句话说,如果ax+by=m有解,那么m一定是gcd(a,b)的若干倍.(可以来判断一个这样的式子有没有解)有一个 ...

随机推荐

  1. computed,methods,watch

    加载顺序: 在官方文档中,强调了computed区别于method最重要的两点 computed是属性调用,而methods是函数调用 computed带有缓存功能,而methods不是 计算属性是基 ...

  2. Python基础5-常用模块

    本节大纲 模块介绍 time &datetime模块 random os sys shutil shelve xml处理 yaml处理 configparser hashlib subproc ...

  3. MySQL语法错误

    [2017-02-18 15:53:44] [42000][1064] You have an error in your SQL syntax; check the manual that corr ...

  4. java多线程面试题小结

    http://www.importnew.com/12773.html http://www.cnblogs.com/fingerboy/p/5352880.html https://blog.csd ...

  5. 阿里云ECS centos7配置tomcat

    准备:创建好developer目录和tomcat子目录 1.在 http://tomcat.apache.org/download-80.cgi  下载tomcat,通过Xftp拷贝到tomcat目录 ...

  6. [转] 使用gc && objgraph 优化python内存

    转自https://www.cnblogs.com/xybaby/p/7491656.html 使用gc.objgraph干掉python内存泄露与循环引用!   目录 一分钟版本 python内存管 ...

  7. 使用Swagger自动生成API文档

    ⒈添加pom依赖 <!-- Swagger核心包,用于扫描程序生成文档数据 --> <dependency> <groupId>io.springfox</g ...

  8. python3+selenium框架设计01-Page Object

    页面对象模型Page Object Modal是一种脚本设计模型,将页面元素,业务操作分割,当实际页面发生变化的时候,只需要修改页面元素文件,业务操作不需要修改. 具体实现需要先写一个页面公共类,里面 ...

  9. 修改Linux主机名与IP之间的映射关系

    linux主机版本: Distributor ID: UbuntuDescription: Ubuntu 14.10Release: 14.10 一.修改linux主机名 1.使用hostname命令 ...

  10. python中的os.listdir()函数

    os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表.这个列表以字母顺序. 它不包括 '.' 和'..' 即使它在文件夹中. 只支持在 Unix, Windows 下使用. ...