Проблема состоит в том, чтобы вывести формулу для определения количества цифр, которое данное десятичное число может иметь в данной базе.
Например: Десятичное число 100006 может быть представлено 17,11,9,8,7,6,8 цифрами в базах 2,3,4,5,6,7,8 соответственно.
Итак, формула, которую я до сих пор получил, выглядит следующим образом: (log10 (num) / log10 (base)) + 1.
в C / C ++ Я использовал эту формулу для вычисления приведенных выше результатов.
long long int size = ((double)log10(num) / (double)log10(base)) + 1.0;
Но, к сожалению, формула не дает правильного ответа в некоторых случаях, например:
Number 8 in base 2 : 1,0,0,0
Number of digits: 4
Formula returned: 3
Number 64 in base 2 : 1,0,0,0,0,0,0
Number of digits: 7
Formula returned: 6
Number 64 in base 4 : 1,0,0,0
Number of digits: 4
Formula returned: 3
Number 125 in base 5 : 1,0,0,0
Number of digits: 4
Formula returned: 3
Number 128 in base 2 : 1,0,0,0,0,0,0,0
Number of digits: 8
Formula returned: 7
Number 216 in base 6 : 1,0,0,0
Number of digits: 4
Formula returned: 3
Number 243 in base 3 : 1,0,0,0,0,0
Number of digits: 6
Formula returned: 5
Number 343 in base 7 : 1,0,0,0
Number of digits: 4
Formula returned: 3
Итак, ошибка на 1 цифру. Я просто хочу, чтобы кто-нибудь помог мне исправить формулу, чтобы она работала для всех возможных случаев.
Редактировать: В соответствии со спецификацией ввода мне приходится иметь дело со случаями, такими как 10000000000, т.е. 10 ^ 10, я не думаю, что log10 () в C / C ++ может обрабатывать такие случаи? Поэтому любая другая процедура / формула для этой проблемы будет высоко оценена.