public static LongNumber Task6(int k) // Задача номер СЕМЬ! { // Переменная для ответа. LongNumber a = new LongNumber("2"); // Переменная для текущего результата. LongNumber q = new LongNumber("1"); // Переменная для проверки точности. LongNumber w = new LongNumber("1"); // "Длинная" единица для удобства. LongNumber x = new LongNumber("1"); // Итерационная переменная. int i = 2; // Пременная для знака. int p = -1; // Пока не дошли до указанной точности и не вышли за границы int32. while ((a.GetExp() <= k * 2) && (i < int.MaxValue)) { // Считаем. q.SetMaxExp(k); q.EqualTo(x / i); q.EqualTo(q * p); a.EqualTo(a + q); // Проверяем точность. w.EqualTo(a - w); int j = a.num.Count; if (a.GetExp() > k) { while (j >= k) { if (w.num[j - 1] != 0) { break; } j--; } if (j <= k) { break; } } // Сохраняем текущий результат. w.EqualTo(a); // Двигаем итерацию. i += 2; // Меняем знак. p *= -1; } a.EqualTo(a * 2); return(a); }