2018/7/31 -zznu-oj -问题 C: 磨刀- 【扩展欧几里得算法的基本应用】

问题 C: 磨刀

时间限制: 1 Sec  内存限制: 128 MB
提交: 190  解决: 39
[提交] [状态] [讨论版] [命题人:admin]

题目描述

磨刀是一个讲究的工作,只能在n℃下进行,所以我们首先要做的就是把刀的表面温度提升到n℃。
处理刀身温度有两种方式:
    1.淬火,使刀身温度提高a℃;
    2.冰敷,使刀身温度降低b℃。
宝儿姐想知道,能否经过多次处理,使得刀身温度达到n℃。

输入

每组输入包含一行:包含三个非负整数n, a, b,含义如上文,数据范围均不超过2^63,输入已EOF结束

输出

根据计算,输出“YES”或“NO”。

样例输入

3 6 9

样例输出

YES

提示

对于第一个样例先冰敷使刀身温度降至-9℃,在淬火使刀身温度升至3℃即可 。
刀身起始温度为0 。


大致思路:

  1、第一眼想到bfs,其实不行,数据返回太大,毕竟数据范围均不超过2^63!

  2、用longlong来存储所有数据!

  3、本题求的是一个方程式:a*x+b*y=n, x表示a磨刀的次数,y表示b磨刀的次数!当然了x和y在应用扩展欧几里得算法的时候会出现负值的情况,需要剔除掉这些情况|!

  4、初始温度为0,看‘’提示‘’得到的信息!一点瑕疵!

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<string.h>
 4 #include<string>
 5 #include<algorithm>
 6 #define ll long long
 7 using namespace std;
 8 #define N 100
 9
10 ll exgcd(ll a,ll b,ll x,ll y){
11     if(!b)
12     {
13         x=1;y=0;return a;
14     }
15     else{
16
17         ll r=exgcd(b,a%b,y,x);
18         y-=a/b*x;
19         return r;
20     }
21
22 }
23
24 int main(){
25     ll n,a,b;
26     while(scanf("%lld%lld%lld",&n,&a,&b)!=EOF){
27         ll r, x,y;
28         r=exgcd(a,b,x,y);
29         if(n%r==0&&x>=0&&y>=0)
30             printf("YES\n");
31         else
32             printf("NO\n");
33     }
34
35     return 0;
36 }

原文地址:https://www.cnblogs.com/zhazhaacmer/p/9399506.html

时间: 2024-08-11 22:09:38

2018/7/31 -zznu-oj -问题 C: 磨刀- 【扩展欧几里得算法的基本应用】的相关文章

Sql Server (时间戳2018/5/31 22:07:36 )

1.NULL的用法__2018-4-13 ISNULL()的用法 注意SET ANSI_NULLS ON/OFF的区别: 执行下面两句比较结果: SELECT location,*FROM mfsysproduct WHERE location IS NULL; SELECT location,*FROM mfsysproduct WHERE location = ''; SELECT location,* FROM mfsysproduct where location !=''; SELEC

it&#39;s time to change myself now (2018.10.31)

自16年从新屋熊职校毕业,入职深圳某厂从事云存储两年半了.两年半的时间很快,快的感觉一生都会飞快,两年多一直很忙,忙的几乎忘了自己是否正向改变过. 正向改变,or 积极改变,今年十一回家,与几个好友小聚,开怀畅聊,聊了过去与未来:突然觉得,在公司在岗位上,自己停止不前浑然不知,抽身之后,方被自己的状态震惊到. 从这几个方面: 工作:cs出身,从事云存储,美且名曰分布式存储,而我接触到的业务,非分布式,非传统存储,仅仅是对kv存储以lun或者说卷的管理这个层面.那么问题来了,这个层面究竟有多高的价

ZZNU - OJ - 2080 : A+B or A-B【暴力枚举】

2080 : A+B or A-B(点击左侧标题进入zznu原题页面) 时间限制:1 Sec 内存限制:0 MiB提交:8 答案正确:3 提交 状态 讨论区 题目描述 Give you three strings s1, s2 and s3. These strings contain only capital letters A,B,C,D,E. The letters that appear in the string represent a number from 0 to 9.Each

2018.1.31 8周3次课

八周三次课(1月31日) 10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步 rsync 通过服务的方式同步 这种方式可以理解为:在远程主机上建立一个rsync的服务器, 在服务器上配置好rsync的各种应用,然后将本机作为rsync的一个客户端连接远程的rsync服务器. 编辑配置文件/etc/rsyncd.conf rsyncd.conf样例 port=873 log file=/var

2018.12.31|区块链技术头条

元旦快乐|今日区块链技术头条 1.比特大陆裁撤全部矿场,「巨轮」早已危机暗藏? 2.加密货币和区块链的2018:行业发展回顾 3.引介 | Uniswap -- 一家不走寻常路的交易所 4.联盟链初识以及Fabric环境搭建流程 5.区块链技术指南:如何用链码实现的Hello World 6.关于比特币的炒作周期,蘑菇已经给了我们答案 7.东半仙:全是假货,没有一件真的!(百假争鸣之三十六) 8.盘点走出概念验证的区块链落地项目 9.区块链服务渐渐在全球范围内推出 华为成为区块链巨头的潜力股 1

笔试题31. LeetCode OJ (18)

如果说求两个数相加是轻松,那么求三个数相加则是痛苦,如果说求四个数相加呢-----绝望. 没错,拿到这个题的时候确实有些绝望,但是既然开发这个题的人如此刁难我们,我们也不能放弃,不要辜负别人的一番好意,所以我咬牙继续. 经历过前面的风雨,我们也学会了成长,这道题是建立在前面的题的基础上而开始的.题目的要求比较严格,要求四个数的和和target的值相等,且四个数字不重复且升序. 所以我们得一个一个的去试探,也就是遍历,这个应该得循环嵌套的遍历,因为我们不能放过每一种情况,因为它可能在包含在我们要求

2018.1.31环境搭建介绍

环境搭建介绍 环境搭建四个部分:操作系统+数据库+开发语言+服务器 操作系统:xp,win7,win8,vista,linux,unix,ios,android... 服务器:windows server 2000.windows server 2003.server2008.server2012.server2016 个人:dos.windows3.1.window95(真正意义上的图形操作系统).win98.windows ME(过渡系统).windows Xp(较之前版本最稳定的).win

2018.3.31 java中的递归

java中的递归 1.概念 定义一个方法时,出现本方法调用本方法的过程,称之为递归 2.特点 必然有一个边界条件 使用递归代码往往更简洁,可读性强 3.什么时候使用递归 n的阶乘和n的累加定义 f(n) =1 f(n)=f(n)*f(n-1) 4.普通实现与递归实现的比较 普通实现 //计算5的阶乘 public class Demo { public static void main(String[] args) { int sum = 1; for (int i =5; i >=1; i--

2018第31周总结

网络免费API接口,在个人开发相关demo应用时练手试用,如果做的好将demo发布出去流量很大超过免费接口使用数限制,再考虑购买收费的服务. 高可用高并发用到的九种技术:其实分层架构.冗余.异步处理,安全.缓存5项技术在传统企业开发也很常用,而纵向分割.分布式.自动化.集群4项技术是一般高并发场景才会用到的. 7月随笔回顾,是自己更真实的面对随笔内容质量低.缺乏深入思考的现象,让自己反思改变,思考如何做的更好.不要让这件事本身的意义就剩下坚持,既然你投入自己的时间去做了,就尽可能让它做的更好.