本题题意:给出最大公约数和其中一个数,求另一个最小的数与该数的最大公约数等于给出的数.
#include <cstdio> using namespace std; int gcd(int a,int b) { int r; while(b) { r = a%b; a = b; b = r; } return a; } int main() { int T; scanf("%d",&T); while(T--) { int a,b; scanf("%d%d",&a,&b); int t = a/b; int i; for(i=2;i<t;i++){if(gcd(a,i*b) == b)break;} if(i==t) while(gcd(i*b,a)!=b)i++; printf("%d\n",i*b); } return 0; }
这题开始想偏了,后来还是直接暴力过了,汗~。
从2开始枚举除了数a外的所有数,直到找到第一个最大公约数为b的。
时间: 2024-11-08 23:06:14