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

对于给定的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. #6279. 数列分块入门 3(询问区间内小于某个值 xx 的前驱(比其小的最大元素))

    题目链接:https://loj.ac/problem/6279 题目大意:中文题目 具体思路:按照上一个题的模板改就行了,但是注意在整块查找的时候的下标问题. AC代码: #include<b ...

  2. mysql 8.0 ~ 存储和账户

    一 简介:关于存储数据文件的改进二 数据文件:   1合并了存储数据库对象信息的事务性数据字典       1 相关文件等存储引擎层存储元数据文件已消失,只有ibd文件,元数据存储在数据字典表    ...

  3. 执行maven install跳过执行maven test方法(网上搜的记录一下,方面以后使用)

    直接在pom文件加上这段配置就可以了 <plugin>           <groupId>org.apache.maven.plugins</groupId>  ...

  4. CF1096D Easy Problem

    题目地址:CF1096D Easy Problem 比赛时高二dalaoLRZ提醒我是状压,然而,我还是没AC (汗 其实是一道很基础的线性dp \(f_{i,j}\) 表示序列第 \(i\) 个字符 ...

  5. 图像超分辨-DBPN

    本文译自2018CVPR DeepBack-Projection Networks For Super-Resolution 代码: github 特点:不同于feedback net,引入back ...

  6. Python3学习笔记30-datetime模块

    datetime是Python处理日期和时间的标准库 获取当前的日期和时间 from datetime import datetime now = datetime.now() print(now) ...

  7. MVC 中Delete 方法报错问题解决方案

    最开始前台ajax提交时代码 function Del(id) { $.ajax({ type: "GET", url: "/Test/Delete", dat ...

  8. C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法

    有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同.这些特殊的类型的成员变量包括: a.引用 b.常量 c.静态 d.静态常量(整型) e.静态常量(非整型) 常量和引 ...

  9. Spring HibernateTemplate与HibernateDaoSupport对比

    HibernateTemplate与HibernateDaoSupport两者都是spring整合hibernate提供的模板技术. 对于保存一个对象,HibernateTemplate需要先配置 配 ...

  10. day2 --> pyc 文件

    执行python 代码时,如果导入了其他的.py文件,那么,执行过程中会自动生成一个与其同名的.pyc文件,该文件就是python解释器便宜之后产生的字节码. PS:代码经过便宜可以产生字节码;字节码 ...