可将x,y分为六种情况进行讨论:

  1. 若x=0或y=0:返回y或x;
  2. 若x<y:交换x,y;
  3. 若x为偶数且y为偶数:gcd(x/2,y/2);
  4. 若x为偶数且y为奇数:gcd(x/2,y);
  5. 若x为奇数且y为偶数:gcd(x,y/2);
  6. 若x为奇数且y为奇数:gcd(x-y,y);

代码如下:

inline int gcd(int x,int y){int n=0,m=0;while(!(x&1)) ++n,x>>=1;while(!(y&1)) ++m,y>>=1;//排除之后全偶的情况
n=min(n,m);while(1){if(x<y) swap(x,y);if(!(x-=y)) return y<<n;while(!(x&1)) x>>=1;}
} 

转载于:https://www.cnblogs.com/ljk123-de-bo-ke/p/10680171.html

gcd的二进制优化笔记相关推荐

  1. 【学习笔记】多重背包相关优化——二进制优化/单调队列优化

    多重背包--二进制优化/单调队列优化 二进制优化 单调队列优化 代码都是 POJ1742 的,注意,那道题二进制优化会超时. 普通的多重背包式子,物品个数限制:c[i]c[i]c[i],单个物品价值 ...

  2. 物理机存放mysql实例原则_MySQL优化笔记(四)--表的设计与优化(单表、多表)...

    前面讲了SQL优化以及索引的使用.设计优化了,那么接下来就到表的设计与优化啦!!!真实地去设计优化单表结构以及讲述多表设计基本原则(结合真实的生产环境的取舍来讲述). 文章结构:(1)单表设计与优化: ...

  3. 背包问题的二进制优化

    01背包问题 图解+详细解析 (转载) 01背包问题 图解+详细解析 (转载)_迪迦 • 奥特曼-CSDN博客 01背包问题 图解+详细解析 (转载)_可控的事情要谨慎,不可控的事情要乐观.-CSDN ...

  4. U3D开发性能优化笔记(待增加版本.x)

    Amir Fasshihi 优化方案: 一.遇到麻烦时要调用"垃圾回收器"(Garbage Collector,无用单元收集程序,以下简称GC) 由于具有C/C++游戏编程背景,我 ...

  5. 为了OFFER,菜鸟的我必须搞懂动态规划系列三个背包问题之多重背包(二进制优化方法)

    @Author:Runsen @Date:2020/9/17 多重背包有三层循环,如果数据非常的大,那么程序就会变得非常悲伤.在多重背包的问题,其实更多的是考查多重背包的二进制优化方法.学习二进制优化 ...

  6. 多重背包问题以及二进制优化

    2020.12.30开始学习AcWing算法<算法竞赛进阶指南>: 上传博客方便复习. 多重背包问题(N<= 100): //Wecccccccc //2020.12.31 #inc ...

  7. hdu-2844 Coins (混合背包+二进制优化)

    HDU链接 文章目录 题目描述: 题意: 题解 (代码) 题目描述: 输入描述: 输出描述: For each test case output the answer on a single line ...

  8. 多重背包的二进制优化(ybtoj-宝物筛选)

    文章目录 题目描述 解析 朴素算法 代码 二进制优化 代码 thanks for reading! 题目描述 解析 朴素算法 首先考虑朴素算法 把数量为num的物体拆成num个子物体 其价值与重量是原 ...

  9. el-select 多选取值_数值优化|笔记整理(3)——线搜索中的步长选取方法,线性共轭梯度法...

    上一节笔记传送门: 学弱猹:数值优化|笔记整理(2)--线搜索:步长选取条件的收敛性​zhuanlan.zhihu.com ------------------------------------ 大 ...

最新文章

  1. 象过河怎么用远程服务器,象过河远程协助的教程
  2. 【python】多进程共享变量
  3. transfer 全平台Windows linux mac配置文件转换工具
  4. uva1471 二叉搜索树
  5. DL:神经网络算法简介之Affine 层的简介、使用方法、代码实现之详细攻略
  6. 8.Spring Cloud Alibaba教程:整合Seata分布式事务
  7. CSDN在文章头部添加目录
  8. php将文件夹打包zip文件,php将文件夹打包成zip文件
  9. Ubuntu 12.04LTS 找不到eth0网卡
  10. 分布式链路追踪框架的基本实现原理
  11. python spark 配置
  12. Android开发学习笔记-md5加密算法
  13. Python 带你来一次说走就走的环球旅行
  14. QML如何与C++交互
  15. 2018蓝桥模拟赛(一) 数独(dfs)
  16. 收集了 1000 个 iOS 常用的库。原文:https://github.com/iamdaiyuan/ios_top_1000
  17. 常见的电脑运行卡顿原因及解决方法
  18. UE4 UE4使用小技巧——使用上帝视角运行游戏
  19. Page not found (404) Request Method: GET Request URL: http://127.0.0.1:8000/ Using the URLconf defin
  20. SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别

热门文章

  1. 亚马逊AWS EC2云实例AMI安装LNMP环境(1)——Nginx安装
  2. 第二部分:S5PV210_关看门狗_1
  3. 如何解析字符串类型的xml
  4. Lombok 安装、入门 - 消除冗长的 java 代码
  5. 记住密码后input黄色背景处理
  6. java设定一个日期时间,加几分钟(小时或者天)后得到新的日期
  7. 同步、异步;阻塞、非阻塞
  8. Oracle undo表空间爆满的解决
  9. CSS选择器(转载)
  10. 基于词典的逆向最大匹配中文分词算法,更好实现中英文数字混合分词