给你一个整数 num,请你找出同时满足下面全部要求的两个整数:
两数乘积等于 num + 1 或 num + 2
以绝对差进行度量,两数大小最接近
你可以按任意顺序返回这两个整数。
巨水题,刷着锻炼自信心。
class Solution {
public:
vector<int> closestDivisors(int num) {
long long v = sqrt(num + 2);
int num1 = num + 1;
int num2 = num + 2;
for(int i = v; i > 0; i--)
{
if(num1 % i == 0) return {i, num1/i};
if(num2 % i == 0) return {i, num2/i};
}
return {0, 0};
}
};