扩展欧几里德很经典。可是也有时候挺难用的。一些东西一下子想不明确。。

于是来了一个逆天模板。。仅仅要能列出Ax+By=C。就能解出x>=bound的一组解了~

LL exgcd(LL a, LL b, LL &x, LL &y) {
if(b == 0) {
x = 1; y = 0;
return a;
}
LL r = exgcd(b, a % b, x, y);
LL t = y;
y = x - a / b * y;
x = t;
return r;
} /*能够得到x>=bound时的x和y,返回true表示有解
否则无解,我仅仅想问这个模板无脑调用有木有~
可是不同的题目特判不同,有的地方记得还是特判,比方a和b的正负和是否为0~*/
bool solve(LL a, LL b, LL c, LL bound, LL &x, LL &y) {
LL xx, yy, d = exgcd(a, b, xx, yy);
if(c % d) return false; xx = xx * c / d; yy = yy * c / d;
LL t = (bound - xx) * d / b; x = xx + b / d * t;
if(x < bound) {
t++;
x = xx + b / d * t;
}
y = yy - a / d * t;
return true;
}

对于这道题,,我们能得出

A=n-m,B=L,C=x-y

注意A的正负性和是否为0。即可了。然后直接套模板 。以下就是个套模板的样例

#include<map>
#include<set>
#include<cmath>
#include<stack>
#include<queue>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional> using namespace std;
typedef long long LL;
typedef pair<int, int> PII; const int MX = 3e4 + 5; LL exgcd(LL a, LL b, LL &x, LL &y) {
if(b == 0) {
x = 1; y = 0;
return a;
}
LL r = exgcd(b, a % b, x, y);
LL t = y;
y = x - a / b * y;
x = t;
return r;
} /*能够得到x>=bound时的x和y,返回true表示有解
否则无解,我仅仅想问这个模板无脑调用有木有~
可是不同的题目特判不同,有的地方记得还是特判,比方a和b的正负和是否为0~*/
bool solve(LL a, LL b, LL c, LL bound, LL &x, LL &y) {
LL xx, yy, d = exgcd(a, b, xx, yy);
if(c % d) return false; xx = xx * c / d; yy = yy * c / d;
LL t = (bound - xx) * d / b; x = xx + b / d * t;
if(x < bound) {
t++;
x = xx + b / d * t;
}
y = yy - a / d * t;
return true;
} int main() {
LL x, y, m, n, L;
LL A, B, C, X, Y;
while(~scanf("%I64d%I64d%I64d%I64d%I64d", &x, &y, &m, &n, &L)) {
A = n - m; B = L; C = x - y;
if(A == 0) { //使用solve唯一的特判放在外面
printf("Impossible\n");
continue;
}
if(A < 0) A = -A, C = -C; //保证A和B都是正数
if(solve(A, B, C, 0, X, Y)) { //得到的x会>=1,由于不可能是0,并且也必需要非负嘛,理论上0和1都一样
printf("%I64d\n", X); //对,,就是这样,。做完了。
} else {
printf("Impossible\n");
}
}
return 0;
}

扩展欧几里德 poj1061 青蛙的约会的更多相关文章

  1. POJ1061 青蛙的约会 —— 扩展gcd

    题目链接:https://vjudge.net/problem/POJ-1061 青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submi ...

  2. poj1061 青蛙的约会 扩展欧几里德的应用

    这个题解得改一下,开始接触数论,这道题目一开始是看了别人的思路做的,后来我又继续以这种方法去做题,发现很困难,学长告诉我先看书,把各种词的定义看懂了,再好好学习,我做了几道朴素的欧几里德,尽管是小学生 ...

  3. POJ1061——青蛙的约会(扩展欧几里德)

    青蛙的约会 Description两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件 ...

  4. POJ-1061青蛙的约会,扩展欧几里德求逆元!

                                                               青蛙的约会 以前不止一次看过这个题,但都没有去补..好吧,现在慢慢来做. 友情提示 ...

  5. POJ1061青蛙的约会(扩展欧几里德算法)

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 102239   Accepted: 19781 Descript ...

  6. POJ1061 青蛙的约会(扩展欧几里得)

    题目链接:http://poj.org/problem?id=1061 青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submission ...

  7. 解题报告:poj1061 青蛙的约会 - 扩展欧几里得算法

    青蛙的约会 writer:pprp Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 119716 Accepted: 25238 ...

  8. POJ1061青蛙的约会[扩展欧几里得]

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 108911   Accepted: 21866 Descript ...

  9. 扩展欧几里得原理的应用:POJ1061青蛙的约会

    /* POJ 1061: 青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 123709 Accepted: 26395 ...

随机推荐

  1. 使用TortoiseSVN碰到的几个问题(2)-冲突解决, 图标重载

    8)解决冲突 冲突分为两种:文件冲突---当两名(或更多)开发人员修改了同一个文件中相邻或相同的行时就会发生文件冲突.下面的属性冲突应该也属于文件冲突. 树冲突---当一名开发人员移动.重命名.删除一 ...

  2. 除了Google,你还应该试试的8个搜索引擎

      在信息高速公路上,我们通过浏览器在web的世界里尽情驰骋.想要成为一个好的驾驶员,掌握方向的能力很重要.这很像是Google在我们生活中扮演的角色,通过它可以找到一个又一个的信息宝藏.Google ...

  3. overflow onclick ondblclick 练习

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. dubbo之启动时检查

    启动时检查 Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认 check="true".所以可以通过 ...

  5. Android使用NDK---函数参数传递-基本类型和数组

    参考链接:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/19/2145486.html 数据传输可分为 基本数据类型传输 和 引用数据类型的传 ...

  6. mysql 是如何保证在高并发的情况下autoincrement关键字修饰的列不会出现重复

    转载自 https://juejin.im/book/5bffcbc9f265da614b11b731/section/5c42cf94e51d45524861122d#heading-8 mysql ...

  7. java线程启动原理分析

    一.前言不知道哪位古人说:人生三大境界.第一境界是:看山是山看水是水:第二境界是看山不是山看水不是水:第三境界:看山还是山看水还是水.其实我想对于任何一门技术的学习都是这样.形而上下者为之器,形而上者 ...

  8. Linux删除大于/小于固定大小的文件等

    删除目录下大小为0的文件 rm -f 删除当前目录下面所有 test 文件夹下面的文件 find ./ -name "test" -type d -exec rm -rf {} ; ...

  9. SQL第三节课

    常用函数 一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x ...

  10. 洛谷P1781 宇宙总统【排序+字符串】

    地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统. 输入输出格式 输入格式: president.in 第一行为一个 ...