扩欧,a+bx=c+dx,输出x>=0且y>=0,且a+bx最小的解。

要注意不能只保证x非负,还得看看能否保证y也非负。

#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
ll a,b,c,d;
void exgcd(ll a,ll b,ll &d,ll &x,ll &y)
{if(!b){d=a;x=1;y=0;}else{exgcd(b,a%b,d,y,x);y-=x*(a/b);}
}
int main(){
//  freopen("a.in","r",stdin);cin>>b>>a>>d>>c;ll x0,y0,D;exgcd(b,d,D,x0,y0);if((c-a)%D){puts("-1");return 0;}x0=x0*((c-a)/D);x0=(x0%(d/D)+d/D)%(d/D);y0=(a+b*x0-c)/d;if(y0>=0){cout<<a+x0*b<<endl;return 0;}exgcd(d,b,D,x0,y0);if((a-c)%D){puts("-1");return 0;}x0=x0*((a-c)/D);x0=(x0%(b/D)+b/D)%(b/D);y0=(d*x0+c-a)/b;if(y0<0){puts("-1");return 0;}cout<<c+x0*d<<endl;return 0;
}

转载于:https://www.cnblogs.com/autsky-jadek/p/6613234.html

【扩展欧几里得】Codeforces Round #406 (Div. 2) A. The Monster相关推荐

  1. Codeforces Round #406 (Div. 1) A. Berzerk 记忆化搜索

    A. Berzerk 题目连接: http://codeforces.com/contest/786/problem/A Description Rick and Morty are playing ...

  2. Codeforces Round #406 (Div. 1) B. Legacy(线段树上优化建图)

    题意: 题解: 如何处理从v往[l−r][l-r][l−r]每个点进行连边? 如果暴力连边就有n2n^2n2条边,无法承受. 考虑如何优化区间建图. 线段树,它可以在区间询问/修改的时候,把一个区间分 ...

  3. Codeforces Round #406 (Div. 1) A. Berzerk(博弈论)

    能转移到必败态的状态就是必胜态,只能转移到必胜态的状态就是必败态.反过来看,假设win[0][1]=win[1][1]=0,若当前为v,位置为now:(1)若win[v][now]=0,则win[v^ ...

  4. Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp

    Codeforces Round #459 (Div. 2) C. The Monster 题意:定义正确的括号串,是能够全部匹配的左右括号串. 给出一个字符串,有 (.). ? 三种字符, ? 可以 ...

  5. 扩展欧几里得求多组解CodeForces - 1244C

    扩展欧几里得求多组解 扩展欧几里得可以求得满足ax+by = c的一组解(这里c%gcd(a,b)要等于0):假如求得的解为(x0 , y0),G = gcd(a , b),这时我们可以发现(x0 + ...

  6. CodeForces - 724C Ray Tracing(扩展欧几里得解方程)

    题目链接:点击查看 题目大意:在 n∗mn*mn∗m 的矩阵中,从点 (0,0)(0,0)(0,0) 发射一个小球,以四十五度的方向出发,速度是 2\sqrt{2}2​,当碰到壁时,会进行反射:当碰到 ...

  7. Codeforces7C 扩展欧几里得

    Line Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit Status ...

  8. 扩展欧几里得 POJ 1061

    感觉这道题目的数据好水啊...我的代码我都觉得姿势特别奇怪...竟然还过了... 好吧,原来不是姿势奇怪,而是逆元需要用的时候是余数也需要的时候,这里的余数是不需要的,所以就AC了 就说一下碰到的问题 ...

  9. 求逆元(线性求逆元)及其扩展欧几里得

    线性求逆元模板: int inv[maxn]; void initInverse(){inv[1] = 1;for(int i = 2; i <= maxn; i++)inv[i] = (p - ...

最新文章

  1. 彻底理解Canal,看这篇就够了
  2. python怎么下载-如何下载python包
  3. python读取excel文件-python读取excel文件
  4. 什么时候才能都及格呢?
  5. Redis简单案例(四) Session的管理
  6. Python+pandas使用重采样技术按时间段查看员工业绩
  7. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——F题 成绩查询ing
  8. ExcelApplication相关资料
  9. Linux安装nextcloud教程,WSL下安装nextcloud
  10. 多用户文件系统java实现_小师妹学JavaIO之:文件系统和WatchService
  11. S3C2440时钟电源管理
  12. C++串口交互数据监听方法与虚拟串口工具安装
  13. win10服务器网页打不开怎么办,win10系统ie浏览器有些网页打不开怎么回事
  14. android使用xml定义背景边框
  15. python word 表格宽度_RPA手把手——python-docx 设置 word 文档中表格格式
  16. 展开运算符和object.assign()的区别
  17. 百万调音师—Audition 标记
  18. MAX40026 280ps高速比较器
  19. 轮胎侧偏角、侧向力分析说明
  20. 无限风光在险峰--《王选文集》

热门文章

  1. 吴思里:阿里淘系前端面试经历
  2. NIMK博弈游戏,POJ-2315 Football Game
  3. torch.flatten()
  4. 关于error: The following untracked working tree files would be overwritten by checkout的解决方案
  5. JS EventListener
  6. Java ByteBuffer用法
  7. qt介绍06——QMAKESPEC
  8. 开放接口API(开发者的福利)
  9. 塑壳断路器用考虑启动电流么_塑壳断路器和微型断路器的区别
  10. 影之刃服务器维护,《影之刃3》骨灰级玩家给大家带来一条龙攻略服务