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

对于给定的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. js开发模式

    js中的开发模式进化史: js中有最初的只能由基本数据类型描述——>单例模式-->工厂模式-->构造函数模式-->原型模式-->各个模式相结合的混合模式,下面我会给大家逐 ...

  2. Spring Cloud学习资料

    博客 1.跟我学Spring Cloud 2.周立|Spring Cloud 3.Spring Cloud基础教程(强烈推荐) 4.Spring Cloud系列文章 5.forezp|史上最简单的 S ...

  3. (6)Java数据结构-- 转:JAVA常用数据结构及原理分析

    JAVA常用数据结构及原理分析  http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balab ...

  4. Day19-File操作-创建 删除,文件过滤

    import java.io.File; import java.io.IOException; /* *创建功能: *public boolean createNewFile():创建文件 如果存在 ...

  5. python - 代码缩进

    # -*- cording :utf-8 -*- # print absolute value of an integer a = 40 b = 1 if a >=50: print a els ...

  6. Django学习手册 - 创建Django工程项目以及APP

    前置步骤: 下载python,django 并且安装好 python 解释器以及django模块. 整体步骤阐述: 创建django工程项目 步骤一:进入安装的python目录 步骤二:输入创建工程的 ...

  7. JavaScript-简介、ECMAScript5.0

    Javascript简介 web前端有三层: HTML:从语义的角度,描述页面的结构 CSS:从审美的角度,描述样式(美化页面) Javascript:从交互的角度,描述行为(提升用户体验) Java ...

  8. MySQL数据库的锁详解【转】

    当然在我们的数据库中也有锁用来控制资源的并发访问,这也是数据库和文件系统的区别之一. 为什么要懂数据库锁? 通常来说对于一般的开发人员,在使用数据库的时候一般懂点 DQL(select),DML(in ...

  9. Mybatis--01

    mybatis 封装jdbc访问代码的一个框架 (hibernate)  ORM对象关系映射 SpringMVC:用来封装servlet的框架 (struts) Spring:体系整合框架,其他框架的 ...

  10. 从MySQL中导入数据到MongoDB中

    从sql中导出需要的数据为csv格式的数据 select field1,field2,...,fieldn from TABLE into outfile '/test.csv' fields ter ...