牛客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;
}