# 官方题解|欢乐赛#42 T1
2025-03-12 15:14:25
发布于:浙江
20阅读
0回复
0点赞
官方题解|欢乐赛#42
T1
思路分析
本题主要考察求解最大公约数的暴力做法,可以从大到小枚举所有的数,第一个出现的就是最大公约数,那么第二个出现的就是次大公约数了。也可以求出所有的公约数,然后通过下标去寻找次大的公约数。
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin >> t;
while(t -- ){
int a, b;
cin >> a >> b;
vector<int>q;//递减的顺序存储所有公约数
for(int i = a; i >= 1; i -- ){
if(a % i == 0 && b % i == 0) q.push_back(i);
}
//q[0]是最大公约数, q[1]是次大公约数
if(q.size() >= 2) cout << q[1] << endl;
else cout << "-1" << endl;;
}
return 0;
}
这里空空如也
有帮助,赞一个