Сегодня я выполнил математическую задачу и сначала попытался решить ее на Python, но, получив неправильный ответ, использовал C #.В основном я должен был сложить все цифры длинным числом (2 ^ 1000).Сумма этих цифр была ответом.Вот мой скрипт на python:
#! /usr/bin/env python3
n = 2**1000
count = 0
while (n > 0):
count += n % 10
n = (int)(n/10)
print (count)
Этот скрипт дает результат 1189. По сути, я добавляю последнюю цифру числа для подсчета, затем удаляю ее из числа и повторяю процесс.Вот аналогичный код в C #:
//Yes this string is the same output from 2^1000. I had python write the string to file for me.
String str = "10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376";
Int32 answer = 0;
foreach (char c in str)
{
answer += (Convert.ToInt32(c) - 48);
}
lblOutput.Text = answer.ToString();
C # дает вывод: 1366, который является правильным ответом.Мне просто любопытно, почему мой скрипт на python получает неправильный ответ.Я неправильно смотрю на математику?