直接用辗转相除法得最大公约数然后去找最小的c就可以了 和1722题类似,注意题目要求c!=b,不要遗漏此条件。
#include<iostream> using namespace std; int gcd(int x, int y) { if (y==0) return x; else return gcd(y, x%y); } int main() { int n,a,b; while (cin >> n) { while (n--&&cin >> a >> b) { for (int c = b;; ++c) { if (a > c) { if (gcd(a, c) == b&&c!=b) //不要遗漏c!=b这个条件 { cout << c << endl; break; } } else if (gcd(c, a) == b&&c!=b) { cout << c << endl; break; } } } } return 0; }