@ jheddings близок и получил правильный ответ, но математика была не совсем правильной. Не забывайте, что вы не ограничены всеми комбинациями символов определенной длины. Вы также можете использовать URL длиной от 1 до y символов. Поэтому мы хотим закрытое значение этой суммы:
x + x ^ 2 + x ^ 3 + ... + x ^ y = 2000000
К счастью, на эту сумму есть закрытая форма:
x + x ^ 2 + x ^ 3 + ... + x ^ y = x * (x ^ y - 1) / (x-1) = 2000000
x - количество возможных символов в нашем диапазоне. Для простоты предположим, что он включает только строчные, прописные и цифры (26 + 26 + 10 = 62).
Тогда мы получим следующее уравнение:
2000000 = (62^(y+1) - 62)/(62-1)
2000000 = (62^(y+1) - 62)/(61)
2000000 * 61 = 62^(y+1) - 62
122000000 = 62^(y+1) - 62
122000000 + 62 = 62^(y+1)
122000062 = 62^(y+1)
log(122000062) = (y+1)
log(122000062) / log(62) = y+1
4.511492 = y+1
3.511492 = y
И, как вы сказали, 3,5 символа невозможно, поэтому необходимо 4. По общему признанию разница не имеет значения в этом случае. Однако в определенных сценариях (особенно при работе с базой 2) это очень важно.