Кодикевич где-то раздобыл вычислительный кластер и не придумал ничего лучше, чем просчитать 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 и я посмотреть не смог.
Так все же почему оно так?
Начиная с факториала 6 все факториалы делятся на 9, т. к. 1х2х3х4х5х6хn на 9 делится по любому (две тройки в произведении уже есть).
Вспоминая признак делимости на 9 сумма цифр должна делиться на 9.
В свою очередь число, которое получилось после сложения всех цифр и которое делится на девять, тоже должно обладать таки свойством: если сложить его цифры, то полученное число тоже будет делиться на 9… и так можно складывать, пока не получится 9;)
Спасибо, Даша! Вопрос закрыт)
в данном месте твоя аватарка, Дим, как нельзя больше всего подходит к ситуации. этакая «легкая задумчивость» на лице))