当前位置: 首页 > 编程日记 > 正文

Codeforces Gym100812 L. Knights without Fear and Reproach-扩展欧几里得(exgcd)

补一篇以前的扩展欧几里得的题,发现以前写错了竟然也过了,可能数据水???

这个题还是很有意思的,和队友吵了两天,一边吵一边发现问题???

L. Knights without Fear and Reproach

http://codeforces.com/gym/100812/problem/L

time limit per test
2.0 s
memory limit per test
256 MB
input
standard input
output
standard output

They were all dead. The final lunge was an exclamation mark to everything that had led to this point. I wiped my sword from the blood of Dragon and sheathed it. And then it was all over. Devastated, I came out of the empty castle and wandered somewhere along a dirt road. But before I could think about what I would do now, I heard a piercing scream from behind: "Stop right now! Drop a sword and raise your hands up!". They were knights. Only knights scream like that before making a hit. If they had been bandits I would be already dead.

I turned back and saw two figures in heavy armor rushing towards me. They were Lancelot and Percival — two knights of the Round Table, known for their fast reprisal over renegades like me. In the Kingdom they were called the Cleaners. As for me, not the most suitable name: they usually left a lot of dirt.

I almost instantly read their technique. Each of them was preparing for some time, then hit instantly, then was preparing again for the same time, then hit again, and so on, while their victim was not fallen. Lancelot spent n seconds to prepare, and Percival — m seconds. I was too tired and could parry a hit only if the previous one was done more than a second ago, and there were no powers to counter-attack at all. It was the sense that Lady Luck was really a hooker, and you were fresh out of cash. The knights knew their job and the first hit I wouldn't be able to parry would finish me off. My story wouldn't have a happy end.

Input

The only line contains two integers separated by a space: n and m (1 ≤ n, m ≤ 2·109) — the intervals of time in seconds between hits of Lancelot and Percival correspondingly.

Output

Output a single integer — the number of seconds from the beginning of the fight when the protagonist will be killed.

Examples
input
Copy
9 6
output
18
input
Copy
7 11
output
22
这个题的意思就是问什么时候两个数的距离最小为1或者0,然后输出数相比较而言大的那个。
这个题一定是有解的,就是a的倍数是b,b的倍数是a。最小距离是0,但是要找最优解。
所以扩展欧几里得就很OK。
如果a和b的最大公约数不是1,那么答案就是他们的最小公倍数。那么a和b的最小距离就是0的时候,直接就是ans=a*b/gcd(a,b);
如果a和b的最大公约数是1,那么利用扩展欧几里得解方程a*x+b*y=1;
求出来的x和y就是a和b对应的系数。但是这里求出来的并不是最优解,因为公式满足a*(x+k*b/gcd(a,b))+b*(y-k*a/gcd(a,b))=1;
这个肯定是成立的,因为gcd(a,b)=1,所以直接将求出来的x和y进行对b和a的取模就可以。
为了避免求出来负值,所以先加上一个b或者a然后取模就可以了。
我一开始写的时候,求出来x和y就直接输出了,并没有考虑取模,但是也水过去了。
关于扩展欧几里得,以前写过一篇水的博客,传送门:我是智障
代码:
 1 //L - Knights without Fear and Reproach-扩展欧几里得
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<algorithm>
 6 using namespace std;
 7 typedef long long ll;
 8 ll exgcd(ll a,ll b,ll &x,ll &y){     //扩展欧几里得
 9     if(b==0){
10         x=1;y=0;
11         return a;
12     }
13     ll r=exgcd(b,a%b,x,y);
14     ll t=y;
15     y=x-(a/b)*y;
16     x=t;
17     return r;
18 }
19 
20 int main(){
21     ll n,m,ans;
22     scanf("%lld%lld",&n,&m);
23     ll x,y;
24     ll c=exgcd(n,m,x,y);
25     if(n==1&&m==1)ans=1;
26     else if(n==1||m==1)ans=2;     //特判
27     else{
28         if(c!=1)
29             ans=n*m/c;
30         else{
31             if(n*m/c>max(abs(x*n),abs(y*m))){
32                 ans=max(abs(x*n),abs(y*m));
33                 if(ans==abs(x*n))ans=abs(((x+m)%m)*n);
34                 else ans=abs(((y+n)%n)*m);
35             }
36             else
37                 ans=n*m/c;
38         }
39     }
40     printf("%lld\n",ans);
41 }

溜了,去写别的题了。

转载于:https://www.cnblogs.com/ZERO-/p/8604442.html

相关文章:

Tarjan无向图连通性

割点&#xff1a;去掉某点x&#xff0c;该无向图分割成两部分&#xff08;及以上&#xff09; 割边&#xff1a;去掉某条边x&#xff0c;该无向图分割成两部分&#xff08;及以上&#xff09; 时间戳&#xff1a;在搜索树上的遍历序号dfn 追溯值&#xff1a;subtree子树和非搜索…

php去除字符串首尾空格(包括全角)(转)

<? $str" dfdfdf曊壷顳 道德观第三附属 "; $str mb_ereg_replace(^( | ), , $str); $str mb_ereg_replace(( | )$, , $str); echo mb_ereg_replace( , "\n ", $str); ?>转载于:ht…

【单片机】写电子钟时遇到的问题

1、<> 与""的区别 1、<> 先去系统目录中找头文件&#xff0c;如果没找到再去当前目录下找。 所以一般用于向标准的头文件如 studio.h 和 stdlib.h 等方法。 2、"" 首先在当前目录下寻找&#xff0c;如果找不到在去系统目录下寻找。这个用于自…

什么是业务组件?

海浪给大家分享了一些关于业务组件的文章&#xff0c;但是什么是业务组件呢&#xff1f;海浪转载了yongtree写的这篇文章。业务组件是一系列不可分割的业务活动&#xff0c;是构建专业化企业的功能模块。业务组件的优势在很大程度上来源于其具备两个相关但截然不同的特性&#…

3.3.2 函数参数不得不说的几件事

函数定义时圆括号内是使用逗号分隔开的形式参数列表&#xff08;parameters&#xff09;&#xff0c;一个函数可以没有参数&#xff0c;但是定义和调用时一对圆括号必须要有&#xff0c;表示这是一个函数并且不接受参数。函数调用时向其传递实参&#xff08;arguments&#xff…

wpf 对控件进行截图,获取快照

有时候我们项目&#xff0c;在执行某个操作后&#xff0c;会生成一些数据结果&#xff0c;如报表一类的东西&#xff0c;我们需要对结果进行保存&#xff0c;甚至是生成word文档。 那么首先获取到控件快照就最基本的条件。 生成快照的静态方法类 using System; using System.Co…

【java】兴唐第二十一节(LinkedList和泛型)

LinkedList知识点 1、实现了Iterable接口的类具有迭代功能。 2、List接口为Collection的子类&#xff0c;表示线形数据列表&#xff0c;其实现类有&#xff1a;ArrayList(数组线性表)与LinkedList(链表) 算了不多说了&#xff0c;上图吧 3、ArrayList是一个可变数组&#xff…

Elgg网站迁移指南

转载地址&#xff1a; http://blog.sina.com.cn/s/blog_84068de60100vr21.html Elgg官方文档上的网站迁移部分是有问题的——缺少了一些重要步骤&#xff0c;而且过程更麻烦。正确的方法如下&#xff1a; 备份网站文件&#xff0c;包括uploads文件夹导出数据库在数据库文件中&a…

INFO:在InstallShield中修改安装包压缩.cab包的大小

如果我们用InstallShield打包一个数据非常大的安装包&#xff08;Basic MSI和InstallScript MSI工程类型&#xff09;&#xff0c;默认情况下安装包会产生多个.cab文件&#xff0c;这里简单说明我们如何修改安装包中.cab文件的大小。首先&#xff0c;有个信息大家需要知道&…

MEF依赖注入实例

什么是MEF 先来看msdn上面的解释&#xff1a;MEF(Managed Extensibility Framework)是一个用于创建可扩展的轻型应用程序的库。 应用程序开发人员可利用该库发现并使用扩展&#xff0c;而无需进行配置。 扩展开发人员还可以利用该库轻松地封装代码&#xff0c;避免生成脆弱的硬…

Data - 数据思维 - 上篇

1 - 概念与定义 如果分析思维是一种结构化思考的体现&#xff0c;那么数据分析思维&#xff08;简称数据思维&#xff09;则是以数据为依托的结构化分析方式。 不同于“我觉得”、“以前是怎样”、“其他人如何”这些直觉化、经验化、类比化的思考方式&#xff0c;数据思维是以…

新生选课系统使用指南

建议选用IE6或者IE7浏览器。 打开浏览器&#xff0c;地址栏输入202.200.112.200&#xff0c; 或者202.200.112.202&#xff0c; 或者202.200.112.210。按回车键。 输入学号和身份证号&#xff08;如果修改过密码&#xff0c;则输入新密码&#xff09;。点“登录”。 点 “学生…

【java】兴唐第二十三节课(暑期第一节TreeSet)

预警&#xff1a;进入暑期培训的博主即将高产似母猪&#xff0c;敬请博友期待。 1、给类添加构造方法 alt shift s 选择Generate Construct using Fields 2、map两种遍历方法 方法一&#xff1a; 获取所有的key值&#xff0c;根据key值获取value值 代码实现&#xff1a; Se…

程序设计分析(开篇)——混沌初开,顿悟设计

一直以来&#xff0c;不断的进行着项目的设计、开发&#xff0c;然而&#xff0c;差的设计&#xff0c;痛苦的维护、编码&#xff0c;让我不断的审视自己的设计是否有问题&#xff0c;在最近的一些思考、理解中&#xff0c;终于有了一些领悟&#xff0c;总结一下过去的设计&…

源代码管理工具调查

任务说明&#xff1a; 一、找出并了解当前较为流行的几种源代码管理工具&#xff08;至少三种&#xff09;&#xff1b; 1、 Visual Source Safe( 简称 VSS )2、 SVN(Subversion) - CVS(Concurrent Version System)的替代和升级版本3、 ClearCase 二、建立表格对这些源代码管理…

从零开始学Go之接口(一):接口

接口是双方约定的一种合作协议。接口实现者不需要关心接口会被怎样使用&#xff0c;调用者也不需要关心接口的实现细节。 接口是一种类型&#xff0c;也是一种抽象结构&#xff0c;不会暴露所含数据的格式、类型及结构。 声明&#xff1a; 接口类型是由一组方法签名定义的集合 …

【java】兴唐第二十四节课

HashMap中put函数的源码分析&#xff1a; &#xff08;一&#xff09;知识点&#xff1a; 1、方法resize&#xff08;&#xff09;的作用是扩容 2、 if ((p tab[i (n - 1) & hash]) null)其中n-1代表最后一个元素的下标&#xff0c;经过和hash的&后获取当前存储nod…

找不到可安装的ISAM”的问题

问题描述&#xff1a; 在 Access 或Sql Server中收到“Could not find installable ISAM”&#xff08;找不到可安装的 ISAM&#xff09;错误信息或者丢失某些文件类 解决方法&#xff1a; 1.注册表编辑器使用不当可能导致严重问题&#xff0c;可能需要重新安装操作系统。Micro…

修改mysql的时间/时区

# 背景 往db中insert数据发现时间不对&#xff0c;因为是新DB&#xff0c;所以猜测是mysql设置不对 # 解决方法 方法一&#xff1a;通过mysql命令行模式下动态修改 show variables like "%time_zone%"; 查看时区 --------------------------| Variable_name | Value…

【java】兴唐第二十五节课(异常和log4j的使用)

异常 1、try catch finally语法&#xff08;附带多重catch&#xff09; 代码实现&#xff1a; public static void main(String[] args) {try {int i 1/0;}catch(ArithmeticException e){System.out.println("出现数学运算异常&#xff1a;" e);}catch(ArrayIndex…

CentOS 命令提示符颜色及样式详解

命令提示符&#xff1a;prompt CentOS下查看当前命令提示符格式&#xff1a; 1 [rootlocalhost ~]# echo $PS1 #显示当前使用的PS1样式 2 [\u\h \W]\$ 命令提示符参数如下&#xff1a; \d &#xff1a;#代表日期&#xff0c;格式为weekday month date&#xff0c;例如&#…

Max_user_connections 与Max_connections 与max_connect_errors

对于连接数的设置&#xff0c;show variables里有三个参数可以对它进行控制&#xff0c;max_connections与max_user_connections以及max_connect_errors。下面对这三个参数相关描述。 max_connections&#xff1a;针对所有的账号所有的客户端并行连接到MYSQL服务的最大并行连接…

压力变动力,存储追求高效率

企业的数据存储量每年都要大幅增长&#xff0c;但是IT预算呈现紧缩趋势。这就是企业面临的最大存储难题&#xff0c;即如何平衡数据增长与提高存储利用率和降低成本之间的关系。 非结构化数据带来的难题 存储最直接的压力来自于不断增长的数据量。今天&#xff0c;我们面对的是…

Hadoop学习之路(三)Hadoop-2.7.5在CentOS-6.7上的编译

下载Hadoop源码 1、登录官网 2、确定你要安装的软件的版本 一个选取原则&#xff1a; 不新不旧的稳定版本 几个标准&#xff1a; 1&#xff09;一般来说&#xff0c;刚刚发布的大版本都是有很多问题 2&#xff09;应该选择某个大版本中的最后一个小版本 阅读编译文档 1、准备一…

static String valueOf(XXX xxx)

1 package day01;2 /**3 * static String valueOf(XXX xxx)4 * 字符串提供了一组静态的重载的valueOf方法,作用5 * 是将其他类型转换为字符串6 * author ta7 *8 */9 public class Demo10 { 10 public static void main(String[] args) { 11 int a 123; 12 …

【java】兴唐第二十五节课小程序学生卡转账小系统(自己写的异常)

1、StuCard.java public class StuCard {public static void TransMoney(int source, int money, int target) {money - target;if(money < 0) {throw new NotEnoughMoneyException("余额不足");}System.out.println("商家的余额为&#xff1a;" sour…

【JQUBAR1.1】jQuery 插件发布

【JQUBAR1.1】jQuery 插件发布 JQUBAR1.1 简介 2010-11-22在博客园发布了柱状图JQUBar1.0 jQuery 插件。现将该插件升级为1.1版本。 1.1版本修复了部分bug&#xff0c;同时新增以下功能&#xff1a; 1.可自定义坐标颜色 2.可自定义X,Y轴坐标名称 3.Y轴动态坐标自动建立 4.Y…

ssh远程操作服务器

登录方式 ssh account192.168.xxx.xxx 输入密码 远程上传下载文件 上传&#xff1a; scp filepath acount192.168.xxx.xxx:path filepath为要上传的文件路径path为上传到服务器的储存路径 下载&#xff1a; scp acount192.168.xxx.xxx:filepath path filepath为要下载的文件路径…

【java】兴唐第二十三节课作业

已知如下&#xff1a; 下表为某班级四次考试成绩单&#xff0c; 要求使用HashMap<String, Integer>存储每次考试的成绩&#xff08;key键为姓名&#xff0c;value为成绩&#xff09;。要求使用LinkedList存储考试次数&#xff0c;有几次考试就有几个HashMap注意&#xf…

Data - 数据思维 - 中篇

6 - 模型与框架 利用现有的成熟的理论、模型与框架&#xff0c;结合实际业务情况&#xff0c;搭建分析框架&#xff0c;尽量确保数据分析维度的完整性&#xff0c;结果的有效性及正确性。 营销理论模型&#xff1a;4P、用户使用行为、STP理论、SWOT等。管理理论模型&#xff1a…