Кодикевич и вычислительный кластер
Кодикевич где-то раздобыл вычислительный кластер и не придумал ничего лучше, чем просчитать 100 факториал… Получил огрмное число, но не успокоился на этом. Он сложил все цифры в полученном результате и получил второе огромное число. Потом сложил все цифры снова и т.д. пока не получил одноразрядное число.
Какое число получил Кодикевич?
Задачку можно найти в Интернете, правда, про другого персонажа. Там же есть ответ: 9.
Но почему?
Я написал нехитрую программу:
static class Program { static long Fact(int n) { return (n == 0) ? 1 : (n * Fact(n - 1)); } static int Sum(long n) { string s = n.ToString(); int sum = 0; for (int i = 0; i < s.Length; i++) sum += int.Parse(s.Substring(i, 1)); return sum; } static void Main() { int n = 20; long x = Fact(n); while (x > 10) x = Sum(x); Console.WriteLine(x); } }
Подумаешь, вычисляю сумму циферок по-индуски…
При n = 6, 7, 8, 9, …, 17, 18, 19, 20 получается действительно цифра 9. Дальше кончился long и я посмотреть не смог.
Так все же почему оно так?
Categories: Будни Кодикевича, задачка, кластер
Recent Comments