Java

Люди, помогите пожалуйста с программой!!!

Задание:
2^15 = 32768, сумма цифр 3 + 2 + 7 + 6 + 8 = 26.
Какова сумма цифр числа 2^1000?

Так же имеется код программы, который при подсчёте суммы, выдаёт неправильный результат (результат немного меньше, чем нужно):

double ch;
long sum=0;
ch=Math.pow(2,1000);
System.out.println(ch);
for(int i=0; i<1000; i++)
{
sum+=ch%10;
ch/=10;
}
System.out.println(sum);
}

Что именно не так в коде и как это исправить?
В таком числе 302 цифры

Для таких гигантских чисел есть класс BigInteger.

BigInteger num = new BigInteger("1");
BigInteger mult = new BigInteger("2");
for (int i = 0; i < 1000; i++) num = num.multiply(mult);
System.out.println(num.toString());
int total = 0;
for (char c : num.toString().toCharArray()) {
total += c - '0';
}
System.out.println(total);

Выведет само это число и сумму его цифр
Для проверки можешь вставить вывод в цикл при умножении

PS:
У тебя не сработало из-за того, что double превратил твое число в 1.0715086071862673E301
DS
Dj Summer ***
2 387
Лучший ответ
Андрей Стайл Огромное спасибо!
Андрей Стайл Извините пожалуйста, если вам не трудно, вы не могли бы пояснить, что значит в строке (total += c - '0') (- '0')?
А 2^1000 в double-то не влезет? Там вроде меньше умещается. В этом случае наверное только выделение памяти поможет, хотя может я и не прав
Блядь! Какие все тормоза!
Короче: если подсчёт 2^15 не втыкаещь. это 2*2*2*2*2*2*2*2*2*2*2*2*2*2*2=32768
Далее вводишь 2*2*2*2*2*2 до 1000. Общую сумму по label, или edit ккаждый знак высчитываешь по очереди через strtoint.
Думаю, может быть математики и найдут тут какой-нибудь хитрый алгоритм подсчёта суммы цифр степени двойки, ну а если нет, то я бы использовала "длинную арифметику" для решения этой задачи.
def count(x):
suma = 2 ** x
all_str = list(str(suma))
result = (int(item) for item in all_str)
last_result = sum(result)
print(last_result)
count(1000)
a = 2**1000
count = 0
while a/10 >= 1:
count += a % 10
a = a//10
count += a
print(count)
EE
Eldar Emil
148