예제 #1
0
        public static LongNumber Task13(LongNumber x)  // Задача номер ТРИНАДЦАТЬ!
        {
            // Переменная для ответа.
            LongNumber a = new LongNumber();
            // Длинная единица, для удобства.
            LongNumber b = new LongNumber("1");

            // Если модуль икса больше единицы.
            if (x.Abs(x) > b)
            {
                // Возвращаем ноль.
                return(a);
            }
            // Если всё нормально.
            else
            {
                // Считаем 100 шагов.
                int n = 100;
                // Переменная для текущего шага.
                // Считаем со 2 шага, поэтому изначально она равна первому шагу, то бишь иксу.
                LongNumber k = new LongNumber("1");
                k.EqualTo(x);
                // Переменная для знака.
                int        p = 1;
                LongNumber y = new LongNumber("1");
                // Считаем ряд со второго шага в цикле.
                for (int i = 2; i <= n; i += 2)
                {
                    k.EqualTo(k * x);
                    k.EqualTo(k * x);
                    k.EqualTo(k * p);
                    y.EqualTo(y * (i * (i - 1)));
                    k.EqualTo(k / y);
                    p *= -1;
                    a.EqualTo(a + k);
                }
                // Удаляем лишние нули и возвращаем.
                a.RemoveZeros();
                return(a);
            }
        }