题目描述
给定两个正整数 c,n,求一个数对 (a,b),满足 1<=a,b<=n,且 gcd(a,b)=c
要求输出最大的 ab
1<=c,n<=10^9
思路:首先 如果 c> n 那么无解
其次 a 和 b 一定都是 c 的倍数,如果 c>n/2,那么选 a=b=c 最优
否则 选 a=(n/c)*c , b=((n/c)-1)c
#include<cstdio>
using namespace std;
int main()
{
int c,n;
scanf("%d%d",&c,&n);
if(c>n) printf("-1\n");
else if(c>n/2) printf("%lld\n",(long long)c*c);
else{
int a = (n/c)*c;
int b = (n/c-1)*c;
printf("%lld\n",(long long)a*b);
}
return 0;
}