HDU 2504 又见GCD

来源:互联网 发布:淘宝如何设置代销 编辑:程序博客网 时间:2024/05/16 06:10

Description

有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b。若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c。 

Input

第一行输入一个n,表示有n组测试数据,接下来的n行,每行输入两个正整数a,b。 

Output

输出对应的c,每组测试数据占一行。 

Sample Input

26 212 4

Sample Output

4

8

没什么好说的直接枚举b的倍数即可,不会超时因为枚举的数量显然很小。

#include<set>#include<map>#include<ctime>#include<cmath>#include<stack>#include<queue>#include<bitset>#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<algorithm>#include<functional>#define rep(i,j,k) for (int i = j; i <= k; i++)#define per(i,j,k) for (int i = j; i >= k; i--)#define loop(i,j,k) for (int i = j;i != -1; i = k[i])#define lson x << 1, l, mid#define rson x << 1 | 1, mid + 1, r#define fi first#define se second#define mp(i,j) make_pair(i,j)#define pii pair<int,int>using namespace std;typedef long long LL;const int low(int x) { return x&-x; }const double eps = 1e-4;const int INF = 0x7FFFFFFF;const int mod = 9973;const int N = 3e5 + 10;int T, a, b;int gcd(int x, int y){return x%y ? gcd(y, x%y) : y;}int main(){scanf("%d", &T);while (T--){scanf("%d%d", &a, &b);for (int i = b + b;; i += b){if (gcd(a, i) == b) { printf("%d\n", i); break; }}}return 0;}


0 0
原创粉丝点击