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

最大公约数gcd和最小公倍数lcm

一、相关公式及其性质

文章只服务于竞赛,所以不会涉及证明。

辗转相除法:gcd(a, b) = gcd(b, a % b); 直到 b == 0,就可以知道上一层递归中的 a % b == 0,所以上一层的 b 就是答案,也就是这一层递归的 a

gcd(a, b) * lcm(a, b) = a * b

所以求最小公倍数就是 a * b / gcd(a, b)

二、例题

1、最大公约数

B3736 [信息与未来 2018] 最大公约数 - 洛谷

// https://www.luogu.com.cn/problem/B3736
#include <bits/stdc++.h>
using namespace std;int gcd(int a, int b)
{if(b == 0)return a;return gcd(b, a % b);
}int main()
{int a, b, c;cin >> a >> b >> c;cout << gcd(gcd(a, b), c);return 0;
}

2、小红的 gcd

登录—专业IT笔试面试备考平台_牛客网

// https://ac.nowcoder.com/acm/problem/275615
#include <bits/stdc++.h>
using namespace std;// 数据a实在太大,只能用string存,只要取模一次b就能用ll gcd解决问题
// 所以边读取a边取模b #define ll long longll ch(string s, ll b)
{ll tmp = 0;for(auto x : s){tmp = tmp * 10 + (x - '0');tmp %= b;}return tmp;
}ll gcd(ll a, ll b)
{if(b == 0)return a;return gcd(b, a % b);
}int main()
{string a;ll b;cin >> a >> b;ll tmp = ch(a, b);cout << gcd(tmp, b);return 0;
}

如果一个十进制的数太大太大,只能用 string 存,而要想得到这个数,操作就是 *10 + 对应数字

相关文章:

  • Yocto是如何使用$D目录来构建文件系统的?
  • 2025年货运从业资格考试题库及答案
  • comfyu BiRefNet-General模型下载及存放地方
  • JDK10新特性
  • 数据结构算法习题通关:树遍历 / 哈夫曼 / 拓扑 / 哈希 / Dijkstra 全解析
  • 小程序初始化加载时间优化 步骤思考与总结
  • 每日一题:两个仓库的最低配送费用问题
  • 每日一题洛谷T534125 合数c++
  • 深入理解Embedding技术-什么是Embedding?
  • 回文数(9)
  • RocketMQ Kafka区别
  • 质数和约数
  • BufferAttribute
  • 双同步坐标锁相环DDSRF-PLL原理说明
  • 专业级软件卸载工具:免费使用,彻底卸载无残留!
  • 力扣题解:1、两数之和 (梦开始的地方)
  • 教育系统源码如何支持白板直播与刷题功能?功能开发与优化探索
  • M0的基础篇之PWM学习
  • 《Python星球日记》 第53天:卷积神经网络(CNN)入门
  • SwarmUI:基于.Net开发的开源AI 图像生成 Web 用户界面系统
  • 云南多地突查公职人员违规饮酒:公安局门口开展酒精吹气测试
  • 印度军方否认S-400防空系统被摧毁
  • 宇树科技王兴兴:第一桶金来自上海,欢迎上海的年轻人加入
  • 中俄就应对美加征所谓“对等关税”等问题进行深入交流
  • 招商蛇口:今年前4个月销售额约498.34亿元
  • 人民财评:网售“婴儿高跟鞋”?不能让畸形审美侵蚀孩子身心