Рассмотрим проблему:
It can be shown that for some powers of two in decimal format like:
2^9 = 512
2^89 = 618,970,019,642,690,137,449,562,112
Результат заканчивается строкой, состоящей из 1 и 2. На самом деле можно доказать, что для каждого целого числа R существует степень двойки, такая что 2K, где K > 0, имеет строку, состоящую только из 1 и 2 в последних R цифрах.
Наглядно это можно показать в таблице ниже:
R Smallest K 2^K
1 1 2
2 9 512
3 89 ...112
4 89 ...2112
Используя этот метод, какова тогда сумма всех наименьших значений K для 1 ‹ = R ‹ = 10? Предлагаемое решение: Теперь эту проблему не так сложно решить. Вы можете просто сделать int temp = power(2, int), а затем, если вы можете получить длину temp, умножьте ее на
(100^len)-i or (10^len)-i
// где я бы определил, сколько последних цифр вам нужно.
Теперь это temp = power(2,int) становится намного выше с увеличением int, что вы даже не можете сохранить его в типе int или даже в long int.... Итак, что нужно сделать. И есть ли другое решение, основанное на битовых строках. Я думаю, это могло бы упростить эту проблему. Заранее спасибо.