2016-12-31 4 views
2

Я пытаюсь решить Проект Эйлера # 16:Как найти сумму отдельных цифр номера?

2^15 = 32768, а сумма его цифр 3 + 2 + 7 + 6 + 8 = 26.

Что такое сумма цифр числа 2^1000?

вопрос выглядит простой, но вместо того, чтобы использовать модуль 10 я пытался решить вопрос, как это:

public class Main { 

    public static void main(String[] args) { 


     long number = (long) Math.pow(2,100); 

     long sum=0; 

     String number2 = String.valueOf(number); 

     char[] digits = number2.toCharArray(); 

     for (char digit : digits) { 

     sum = sum + digit; 
     } 

     System.out.println(sum); 



    } 


} 

Однако это дает неправильный ответ, я не могу видеть мою ошибку, не так ли можно решить этот вопрос таким образом?

+1

2^100 не вписывается в длинные, вам нужно посмотреть в типы BigInt –

+0

Но я не могу наложить 'Math.pow (2,100)' на BigInteger? –

+0

Да, вы не можете, но pow - это просто умножение после всех –

ответ

3

A long не может содержать номер. Вы должны переписать, используя тип данных, который может.

См. Large Numbers in Java для указателей.

+0

Я пробовал использовать * BigInteger *, но я не могу использовать его для 'Math.pow (2,100)' –

+2

Вы не можете использовать 'Math.pow' для этого. См. Http://stackoverflow.com/q/4582277/53897 –

+0

А я вижу, большое вам спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^