Home > Будни Кодикевича, задачка, кластер > Кодикевич и вычислительный кластер

Кодикевич и вычислительный кластер

Кодикевич где-то раздобыл вычислительный кластер и не придумал ничего лучше, чем просчитать 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 и я посмотреть не смог.

Так все же почему оно так?

  1. No comments yet.
  1. No trackbacks yet.