HDU 2504 又见GCD
2016-09-02 13:46
369 查看
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
Sample Output
没什么好说的直接枚举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;
}
有三个正整数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
2 6 2 12 4
Sample Output
48
没什么好说的直接枚举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;
}
相关文章推荐
- HDU 2504 又见GCD
- HDU 2504 又见GCD【递归】
- hdu 2504 又见GCD
- HDU 2504 又见GCD
- Hdu 2504 又见GCD【基础数论】
- HDU 2504 又见GCD
- 【HDU - 2504】又见GCD
- HDU 2504 又见GCD(水)
- [数论]HDU 2504 又见GCD
- HDU 2504 又见GCD
- HDU2504又见GCD
- HDU-2504 又见GCD
- ecjtu-summer training #3 C 又见GCD HDU 2504
- hdu 2504 又见GCD
- HDU 2504 又见GCD(gcd)
- hdu 2504 又见gcd(gcd)
- HDU 2504 又见GCD
- HDOJ(HDU) 2504 又见GCD(利用最大公约数反推)
- hdu2504——又见GCD(水)
- 又见GCD(GCD)【HDU】-2504