牛客MAX
这道题也是纯纯的数学题,说句实话错了两次纯纯的犯病了,没有考虑到longlong的问题=-=,那么还是讲一下解题的思路,题目的意思呢就是要你找一个最大公约数为c,且两数都小于n的a和b的积输出就可以了
一共考虑三种情况
第一种是c>n的情况,这种情况无论如何都不存在,直接输出-1;
第二种是2c>n的情况,这种情况a和b的值一样,都为c,输出c*c(记得longlong呜呜呜);
第三种就是第三种的情况,这种情况只要找到小于n的c的倍数,记为x,但是不能输出x*x,那样最小公约数为x,那么输出的肯定为x*(x-c);
下附代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long c,n;
cin>>c>>n;
if(c>n)
{
cout<<"-1"<<endl;
return 0;
}
long long t;
if(n/c==1)
t=c*c;
else t=(n/c)*c*(n/c-1)*c;
cout<<t<<endl;
}

京公网安备 11010502036488号