零、写在前面
这是打卡的第十四天,主要的题目是昨天的,为了练习相关知识点,我增加了一道一星题目来给大家一个练习的机会,主要知识点在
《算法零基础100讲》(第14讲) 最小公倍数
https://blog.csdn.net/WhereIsHeroFrom/article/details/121113291
一、主要知识点
1.辗转相除法求最小公约数
这部分其实高中学过。
递推的时候可以发现后面两个数字的位置发生了变化,这才体现辗转是不是?
int gcd(int a,int b){ return b?gcd(b,a%b):a; }
2.最小公倍数的求法
int lcm(int a, int b){ return a / gcd(a,b) *b; }
二、课后习题
1819. 序列中不同最大公约数的数目(这个有点难。。。真的!)
[解题报告]《算法零基础100讲》(第13讲) 最大公约数
https://blog.csdn.net/qq_17593855/article/details/121098587
这个其实昨天的题就是这个,所以请查看昨天的题解。
数学问题->最大公约数与最小公倍数
Least Common Multiple
http://codeup.hustoj.com/problem.php?cid=100000589&pid=0
为了让大家练习一下相关的公倍数求法,我增加了一道题,大家可以尝试一下,因为难度不高,我就把题解直接放出来了。
别看英文吓人,直接看输入输出就是有几组数据,你需要求每组的最大公倍数,就这么简单0.0
#include<cstdio> int gcd(int a,int b){//辗转相除 return !b?a:gcd(b,a%b); } int lcm(int a,int b){ return a / gcd(a,b) * b; } int main(){ int n,k; scanf("%d",&n); while(n--){ scanf("%d",&k); int ans,temp; scanf("%d",&ans); for(int i = 1;i < k;++i){ scanf("%d",&temp); ans = lcm(ans,temp); } printf("%d\n",ans); } return 0; }
总结
也没啥,一道简单的题而已,大家加油。
三、今日总结
最近事情好多,到期中了,但是这个题解我不会放弃更新,一群人可以走的很远。