题意:和为n的两个正整数a和b的最大最小公倍数(2 <= n <= 1000000000),共T组测试数据(1 <= T <= 10000)。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4627
——>>就像相同的周长时,圆的面积最大一样,a, b越接近n / 2,其最小公倍数就越大。
当n为奇数时,就是(n/2) * (n/2+1);
当n为偶数时,要找第一个比n/2小的奇数a, 结果就是a * (a+2);
注意:当n == 2时特判。
#include <iostream>
using namespace std;
int main()
{
long long T, n;
cin >> T;
while(T--){
cin >>n;
long long ret;
if(n % 2 == 1){
long long temp = n / 2;
ret = temp * (temp + 1);
}
else{
long long temp = n / 2;
if(temp == 1) ret = 1;
else{
temp--;
while(temp % 2 == 0) temp--;
ret = temp * (n - temp);
}
}
cout << ret << endl;
}
return 0;
}