当前位置: 首页 > news >正文

题解 | #G.Gcd# 2023牛客暑期多校6

G.Gcd

数论

题目大意

给定一个包含两个非负数的初始集合 S = { x , y } S=\{x,y\} S={x,y}
每次操作可以选定其中不相等的两个数 a , b a,b a,b ,并将 a − b a-b ab g c d ( a , b ) gcd(a,b) gcd(a,b) 置入集合 S S S ,其中 g c d ( 0 , a ) = a gcd(0,a)=a gcd(0,a)=a
可以操作任意次,问能否使得集合 S S S 包含非负数 z z z

前置知识点

裴蜀定理

解题思路

根据裴蜀定理,两个正整数辗转相减只能得到他们最大公约数的倍数//
因此对于 z z z ,判断其是否是 g c d ( x , y ) gcd(x,y) gcd(x,y) 的倍数即可

如果 z z z g g g 的倍数,则可以通过以下操作得到 z z z

  1. g = g c d ( x , y ) g=gcd(x,y) g=gcd(x,y) 置入集合
  2. x x x 作为 g g g 的倍数,其加减任意次 g g g 便可得到任意 g g g 的倍数。
    只能减不能加怎么办呢//先把 x x x 减到 − g -g g 就好了

值得注意的是,本题的数据约束为非负数,这意味着需要对 0 0 0 的情况进行特判//

  1. 对于 z = 0 z=0 z=0 ,仅当 x , y x,y x,y 0 0 0 时有解
  2. 对于 x = 0 x=0 x=0 y = 0 y=0 y=0 ,仅当 z z z 与其中之一相等时有解(实际上这条也满足裴蜀定理//只是懒得重写 g c d gcd gcd 了)

参考代码

参考代码为已AC代码主干,其中部分功能需读者自行实现

void solve()
{ll x,y,z;cin >> x >> y >> z;if(x&&y&&z==0) {cout << NO;return;}if((x==0)||(y==0)) if(z==x||z==y) {cout << YES;return;} else {cout << NO;return;}ll g=gcd(x,y);if(z%g) cout << NO;else cout << YES;
}
http://www.lryc.cn/news/108607.html

相关文章:

  • 苍穹外卖day10——订单状态定时处理(Spring Task)、来单提醒和客户催单(WebSocket)
  • 【多线程初阶】多线程案例之单例模式
  • 跨境选品怎么选?建议独立站卖家收下这份利基产品查找攻略!
  • [C++项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍...
  • opencv-32 图像平滑处理-高斯滤波cv2.GaussianBlur()
  • Windows 环境Kubernetes安装
  • 自建类ChatGPT服务:本地化部署与远程访问教程
  • 常用SQL语句总结
  • arm交叉编译lmbench
  • ExtJs 7.7.0 下载方法与去除trial水印
  • Android11开发规划
  • 活动隔断在现在酒店运用的方式
  • Jenkins工具系列 —— 插件 钉钉发送消息
  • LeetCode 26 题:删除有序数组的重复项
  • 优雅地切换node版本(windows)
  • 反诈:吴明军、黄亮领导的WIN生活资金盘,大家警惕防范此类诈骗
  • shell、bash的关系及bash的特性(一)
  • 【问题随记】
  • Stable Diffusion AI绘画学习指南【常用模型,采样器介绍】
  • pycharm——漏斗图
  • RISC-V基础之浮点指令(包含实例)
  • 前端生成图片验证码怎么做?
  • 【Java】springboot框架 粮油质量溯源MES生产加工管理系统源码
  • macOS install redis遇到的bug(tar包,homebrew安装,守护进程redis.conf配置)
  • 面试题:创建JS对象的几种方式?构造函数是什么?new操作符具体干了什么?为什么字符串可以使用length?
  • LabVIEW深度相机与三维定位实战(下)
  • 【基础类】—CSS盒模型的全面认识
  • ATFX汇评:非农就业报告来袭,汇市或迎剧烈波动
  • SpringBoot的常用注解的服用方式
  • [课程][原创]CMakeLists编写实战linux版