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