Задание:
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);
}
Что именно не так в коде и как это исправить?
Java
Люди, помогите пожалуйста с программой!!!
В таком числе 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
Для таких гигантских чисел есть класс 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
Андрей Стайл
Огромное спасибо!
Андрей Стайл
Извините пожалуйста, если вам не трудно, вы не могли бы пояснить, что значит в строке (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.
Короче: если подсчёт 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)
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)
count = 0
while a/10 >= 1:
count += a % 10
a = a//10
count += a
print(count)
Похожие вопросы
- JAVA. Помогите, пожалуйста, дописать код программы:
- Помогите написать java программу нахождения максимального числа из 4-х
- Ошибка с java в intellij idea помогите пожалуйста
- Java | Помогите, пожалуйста с задачей.
- Помогите пожалуйста с задачей первого курса.
- Помогите пожалуйста, изучаю язык Java. Не понимаю как написать код((
- Помогите пожалуйста задачи для Java.
- Помогите пожалуйста написать методы,java, Кто даст ответ дам 100 балов подарком ОТВЕТ ДАЙТЕ СЕГОДНЯ ЭТО СРОЧНО!!!!!!!!!!
- Помогите, пожалуйста! Это все в java
- Подскажите пожалуйста, как в данном коде Java сделать так, чтоб при нажатии цифры 3 программа завершала свою работу?