牛客竞赛题库(NC6710)

#include<stdio.h>

unsigned long long gcd(unsigned long long a, unsigned long long b)
{
    return b == 0 ? a : gcd(b, a % b);
}

int main()
{
    unsigned long long a, b;
    scanf("%llu %llu", &a, &b);
    unsigned long long result = a / gcd(a, b) * b;
    printf("%llu\n", result);
    return 0;
}

这里我们写一个关于辗转相除法的函数来计算两个正整数的最大公约数。

公式基本原理:两个整数的最大公约数等于其中较小的数和两数相除余数的最大公约数。

该函数代码运行方式:当b为0时,此时的a就是最大公约数,直接返回a,否则递归调用gcd函数,将b作为新的a,a%b作为新的b,直至余数为零结束。

这里我将代码运行方式形象地写在纸上,方便理解递归函数以及辗转相除法在代码中的运行。

求最小公倍数的话,只需要两个正整数相乘除以最小公倍数即可,这里我们需要做一个小小的调整,要先除后乘,如果先相乘的话可能会溢出,超过该数据类型的范围,所以我们就先让一个正整数除以最小公倍数然后再乘以另一个正整数,即可完成该题目。

牛客竞赛题库(C语言) 文章被收录于专栏

这是我对题库写的代码以及分析,由易到难,我会坚持把它写完,可能有些粗糙,专栏免费,不想看可以划走。

全部评论

相关推荐

我推的MK:工作经历太简短啦,面试主要就是问你实习经历的,只写两行也没得问,重要还是你做出什么工作取得了什么效果
点赞 评论 收藏
分享
#腾讯求职进展汇总#腾讯面了六次,都凉了基本上隔一段时间被腾讯捞起来,去面试匆匆忙忙准备几天,又去面试不得不说,面多了,我基础八股慢慢的补起来了,虽然还是够不着腾讯的门槛算法真没怎么刷过,怎么才能在短时间内补回来呀补充一点整理的面经#&nbsp;腾讯金融科技一面1.事件循环,加上了requestAnimationFrame的回调2.监控埋点了解原理实现吗3.大文件上传细节,MD5加密被伪造怎么办4.围绕项目的性能优化5.http缓存(强缓存、协商缓存)6.虚拟滚动的具体实现,比如如果不是固定高度怎么做7.问公司业务8.算法:js事件循环、写一个缓存策略的类#&nbsp;企业微信一面做题循环递增数组js事件循环机制输入网址到页面显示过程get、posthttp大致介绍了一下项目--重点介绍项目中的性能优化...忘了二面自我介绍对该部门的了解情况做题循环递增数组--因为没理解面试官的疑惑点,反复问了好几遍(留下了条理不清晰的印象)问全面的测试用例有哪些数组和链表的应用场景和区别get、post区别进程间通信方式问小程序后面还有什么能优化的地方、如何测试性能问两个人分工--我负责哪一部分问如何实现某个亮点的如何策划项、项目测试谁负责总结:每个点都答不出什么东西,理解能力也有问题,感觉每一句回答都精准踩在了面试官的雷点上。卒...白屏const属性可以改变吗
查看24道真题和解析 腾讯求职进展汇总
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务