题意:已知a,c最大公约数是b,给定a,b,求最小的c(c!=b)
思路:c=i*b,枚举i(i>=2)计算a,c最大公约数即可
#include <iostream>
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <algorithm>
#include <cstring>
#include <utility>
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
int a,b;
int gcd(int x,int y)
{
return y==0?x:gcd(y,x%y);
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
scanf("%d %d",&a,&b);
for(int i=2;;i++)
{
if(gcd(a,i*b)==b)
{
printf("%d\n",i*b);
break;
}
}
}
return 0;
}

本文介绍了一种算法,用于解决给定a和b的情况下找到最小的c,使得a和c的最大公约数等于b。通过枚举i并计算a与i*b的最大公约数来实现。
1338

被折叠的 条评论
为什么被折叠?



