Сколько раз мне нужно добавить 2, чтобы получить значение, эквивалентное 2, поднятое до 1000 - PullRequest
1 голос
/ 04 января 2012

Я пытаюсь решить Project Euler Prob 16. Я планирую взять двумерный массив для хранения вычислений и сохранения результатов. Чтобы вычислить 2, поднял до 3, мне нужно добавить 2, 4 раза Чтобы вычислить 2, поднял до 4, мне нужно добавить 2, 8 раз Точно так же, сколько раз мне нужно будет добавить 2 к результату, чтобы поднять 2 до 1000? Какая структура данных будет лучше всего подходить для этого (предпочтительно в C ++)? И какой будет хороший алгоритм для решения этой проблемы в C ++?

Ответы [ 2 ]

2 голосов
/ 04 января 2012

Если я вас правильно понимаю, вы спрашиваете, какую структуру данных вы должны использовать для хранения цифр целочисленного значения результата 2 1000 . Вместо того, чтобы изобретать велосипед, я бы рекомендовал использовать что-то вроде класса Java BigInteger , который будет содержать произвольно большие числа.

0 голосов
/ 04 января 2012

Решение точно такой же проблемы было показано ранее здесь . Количество десятичных цифр в 2 1000 равно ceil((1000 + 1) * log10(2)) = 302. Для завершения строки потребуется еще один символ, '\0'. * log10(2) = * 0.3 может быть аппроксимировано с / 3 = * 0.3(3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...