У меня есть два вопроса:
Если мы хотим объявить миллион имен переменных, имеющих одинаковую длину, то какая должна быть наименьшая возможная длина?
Если мы хотим объявить миллион имен переменных любой возможной допустимой длины, то какой максимальный размер имени переменной требуется?
Первый символ в идентификаторе должен быть a-z
, A-Z
или подчеркнуть, для 53 возможностей. Последующие символы могут быть цифрами 0-9
тоже на 63 возможности.
Так n
символы дают 53 * (63 ** (n-1)) юридических идентификатора:
Length Names
1 53
2 3339
3 210357 // much less than 1000000
4 13252491 // much more than 1000000
Некоторые из них являются зарезервированными словами (int
, return
и т.д.), которые нам не разрешено использовать. Другие начинаются с подчеркивания, которое не одобряется стандартом C ++. Но эти небольшие соображения не меняют ответ, который равен 4 (на оба ваших вопроса).
У вас есть как минимум 53 символа, которые можно использовать в качестве первого символа имени переменной (‘a’ — ‘z’, ‘A’ — ‘Z’ и ‘_’). Тогда вы также можете использовать цифры, так что у вас есть 63 возможных символов. 53*63*63*63 > 1 000 000
так что вам не нужны имена длиннее 4 символов.
Как долго имя переменной может быть, зависит только от компилятора.
Это не вопрос программирования, а математический вопрос.
Для именования переменных мы должны использовать буквы a-z, цифры 0-9 и несколько специальных символов (-, _).
Таким образом, мы можем использовать ок. 39 разных персонажей. Это наш алфавит. Поэтому для хранения 1000000 имен мы должны использовать имена с минимальной длиной:
log (base39) (1000000) = ~ 3,8
Таким образом, чтобы назвать миллион переменных (чтобы получить 1000000 уникальных имен), вы должны использовать как минимум 4 символа в имени. (Я знаю о недопустимых именах переменных «023abc», но если мы их исключим, результат не сильно изменится).
Ответ: 4 символа. Это минимальное количество символов. Максимальная длина имени ограничена вашим компилятором.
Если я вас правильно понял, то в C ++ есть специальный шаблонный класс std :: numeric_limits, который позволяет получить максимальные и минимальные значения для любого арифметического типа. Чтобы использовать его, вам нужно включить заголовок <limits>
Например, чтобы получить максимальные и минимальные значения для типа int, вы можете написать
#include <iostream>
#include <limits>
int main()
{
std::cout << "The maximum value of int is " << std::numeric_limits<int>::max() << std::endl;
std::cout << "The minimum value of int is " << std::numeric_limits<int>::min() << std::endl;
}
Если вы спрашиваете о минимальной длине для всех одного миллиона идентификаторов, имеющих одинаковую длину, то вы должны рассчитать количество перестановок так, чтобы n!
будет не менее миллиона