Учитывая два числа n и k, найдите x, 1 <= x <= k, который максимизирует остаток n % x.
Например, n = 20 и k = 10, решение равно x = 7, потому что остаток 20% 7 = 6 максимален.
Мое решение:
int n, k;
cin >> n >> k;
int max = 0;
for(int i = 1; i <= k; ++i)
{
int xx = n - (n / i) * i; // or int xx = n % i;
if(max < xx)
max = xx;
}
cout << max << endl;
Но мое решение O(k). Есть ли более эффективное решение этого?

