题目描述
给定n对正整数ai,bi,请你求出每对数的最大公约数。
样例
2
3 6
4 6
3
2
算法
(欧几里得算法)
1.刚开始对a整除b不太懂,百度了一下,看这里。
时间复杂度
$O(log min(a, b))$
C++ 代码
**#include <iostream>
using namespace std;
int gcd(int a, int b)
{
return b ? gcd(b, a % b) : a;
}
int main()
{
int n;
scanf("%d", &n);
while(n --)
{
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", gcd(a, b));
}
return 0;
}**
时间复杂度刚开始写错了,写成了$O(n)$的,应该是$O(logmin(a, b))$的。这里有一个证明,大家可以瞅瞅~
https://blog.csdn.net/xiamentingtao/article/details/44702869?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
为什么不用pair呢
你有写pair版的吗
https://www.acwing.com/problem/content/submission/code_detail/1480703/
有点勉强 强行pair
好的,我学习下。
怎么404了。。
好滴,学习了hh
求两个数的最大公约数的时间复杂度是 $O(\log \min(a, b))$ 的。
好,谢谢大佬指正。