链接:https://ac.nowcoder.com/acm/contest/635/H
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

艾兰岛和沃夫岛的时间算法很不一样,它们都拥有它们自己的魔法大时钟。以我们的时间来看艾兰岛的大时钟起鸣在b, b+a, b+2a, b+3a,… ,(a,b均为正整数)并且沃夫岛的大时钟起鸣在d, d+c, d+2c, d+3c,….(c,d均为正整数)因为计时的方法不同,两边经常打仗,但可能有某些时间点两边的大时钟同时起鸣。我们称这样的时间点为和平点。求第一个和平点。(如果没有这样的时间点,输出-1)

输入描述:

第一行输入两个整数a,b ( 1< a,b < 5*108)

第二行输入两个整数c,d ( 1< c,d < 5*108)

输出描述:

第一个和平点所表示的时间(如果没有这样的时间点,输出-1)
示例1

输入

复制

20 2
9 19

输出

复制

82
示例2

输入

复制

2 1
16 12

输出

复制

-1

解题思路:由题目我们可以很容易列出方程b+ax=d+cy,令b<d,如果b>d我们就交换(a,c),(b,d),这样的话我们就只需要求出y的最小正整数解,然后d+cy必定是答案,我们把式子转化为ax-cy=d-b,然后再转化为ax+cy=d-b,改成求y的最大非正整数解,答案也随即变成d-cy了。
代码:
#include<iostream>
using namespace std;
typedef long long ll;
ll a,b,c,d;
void exgcd(ll a,ll b,ll &x,ll &y,ll &c){
if(!b){
x=,y=,c=a;
}else{
exgcd(b,a%b,y,x,c);
y-=a/b*x;
}
}
int main(){
cin>>a>>b>>c>>d;
if(b>d){
swap(b,d);
swap(a,c);
}
ll x,y,gcd;
exgcd(a,c,x,y,gcd);
if((d-b)%gcd){
puts("-1");
return ;
}
x*=(d-b)/gcd; y*=(d-b)/gcd;
y%=(a/gcd);
while(y>) y-=a/gcd;
cout<<d-c*y<<endl;
return ;
}

江西财经大学第二届程序设计竞赛同步赛 H大时钟 (扩展欧几里得)的更多相关文章

  1. 牛客网 江西财经大学第二届程序设计竞赛同步赛 D.绕圈游戏-(跳青蛙游戏)找数的所有因子就可以了

    链接:https://ac.nowcoder.com/acm/contest/635/D来源:牛客网 D.绕圈游戏 433为了帮ddd提升智商,决定陪他van特殊的游戏.433给定一个带有n个点的环, ...

  2. 江西财经大学第一届程序设计竞赛 G题 小Q的口袋校园

    链接:https://www.nowcoder.com/acm/contest/115/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  3. 南昌大学航天杯第二届程序设计竞赛校赛网络同步赛 I

    链接:https://www.nowcoder.com/acm/contest/122/I来源:牛客网 题目描述 小q最近在做一个项目,其中涉及到了一个计时器的使用,但是笨笨的小q却犯难了,他想请你帮 ...

  4. 江西财经大学第一届程序设计竞赛 H题 求大数的阶乘

    链接:https://www.nowcoder.com/acm/contest/115/H 来源:牛客网 晚上,小P喜欢在寝室里一个个静静的学习或者思考,享受自由自在的单身生活. 他总是能从所学的知识 ...

  5. 江西财经大学第一届程序设计竞赛 H

    链接:https://www.nowcoder.com/acm/contest/115/H来源:牛客网 题目描述 晚上,小P喜欢在寝室里一个个静静的学习或者思考,享受自由自在的单身生活. 他总是能从所 ...

  6. 江西财经大学第一届程序设计竞赛 G

    链接:https://www.nowcoder.com/acm/contest/115/G来源:牛客网 题目描述 周末,小Q喜欢在PU口袋校园上参加各种活动刷绩点,体验丰富多彩的大学生活. 但是每个活 ...

  7. 江西财经大学第一届程序设计竞赛 F题 解方程

    链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  8. 江西财经大学第一届程序设计竞赛 I

    链接:https://www.nowcoder.com/acm/contest/115/I来源:牛客网 题目描述 小P和小Q是好朋友,今天他们一起玩一个有趣的游戏. 他们的初始积分都为1,赢的人可以将 ...

  9. 江西财经大学第一届程序设计竞赛 F

    链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 题目描述 对于方程 2018 * x ^ 4 + 21 * x + 5 * x ^ 3 + 5 ...

随机推荐

  1. 学习linux笔记(不断更新)

    该文章主要记录学习Linux路上的一些命令,备查. 安装Linux系统 平时用的Mac,不想再去安装一遍双系统了,因此直接用docker安装了centos.主要步骤为到docker官网下载Stable ...

  2. Redis的值value(数据结构类型)

    Redis的数据结构类型,指的是redis的值的value类型: Redis的常用数据结构类型:string,list,set,sortedSet,hash 一.sting的类型 string类型是r ...

  3. 《JavaScript高级程序设计》笔记:函数表达式(七)

    递归 function factorial(num){ if(num<=1){ return 1; }else { return num * arguments.callee(num-1); } ...

  4. [代码笔记]JS保持函数单一职责,灵活组合

    比如下面的代码,从服务端请求回来的订单数据如下,需要进行以下处理1.根据 status 进行对应值得显示(0-进行中,1-已完成,2-订单异常)2.把 startTime 由时间戳显示成 yyyy-m ...

  5. Windows环境npm无法生效

    上网查询得知安装完nodejs之后配置windows环境变量只能保证在命令行工具中可以使用npm,如果想在git bash中使用需要再安装一遍 安装后记得配置环境变量

  6. 【Oracle教程资源大合集】Oracle数据库免费学习资源汇总

    Oracle的产品非常丰富,各类学习资源也五花八门,本文将介绍Oracle官方的免费教程与风哥整理的Oracle视频教程: 1.Oracle帮助中心 Oracle帮助中心也称为Oracle文档中心,这 ...

  7. SQLServer之创建数据库快照

    创建数据库快照注意事项 语法:set transaction isolation level snapshot; 指定事务中任何语句读取的数据都将是在事务开始时便存在的数据的事务上一致的版本. 事务只 ...

  8. Linux学习历程——Centos 7 chown命令

    一.命令介绍 Linux是多人多工操作系统,所有的文件皆有拥有者.利用 chown 将指定文件的拥有者改为指定的用户或组, 用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改 ...

  9. UI自动化之日志

    Python自动化测试中,日志输出功能是不能缺少的一部分.让我们来看看如何实现日志的输出吧 一.控制台输出日志 def get_logger(): try: if not os.path.exists ...

  10. go学习笔记(一)