Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream> // подключение библиотеки
- void Pi(int n) // объявление функции
- {
- int length = 10 * n / 3 + 1, cnt_9 = 0; // объявление переменных
- // length необходимая длина временного массива
- // cnt_9 счетчик 9-ок
- int dgt = 0, *data;
- data = new int[length]; // создание временного массива
- for (int i = 0; i < length; i++) // заполнение массива 2-ками
- data[i] = 2;
- for (int j = 0; j <= n + 1; j++) // запуск цикла, зависящего от необходимого количества цифр
- {
- int tmp = 0;
- for (int i = length; i > 0; i--) // запуск цикла в обратную сторону
- {
- int x = 10 * data[i-1] + tmp*i; // формулы
- data[i-1] = x % (2*i - 1);
- tmp = x / (2*i - 1);
- }
- data[0] = tmp % 10;
- tmp /= 10;
- if (tmp == 9) cnt_9++; // увеличение счетчика
- else if (tmp == 10) // если цифра оказалась равной 10
- {
- std::cout << dgt + 1; // вывод цифры на 1 больше
- for (int i = 0; i < cnt_9; i++) // выводим 0
- std::cout << 0;
- dgt = 0;
- cnt_9 = 0;
- }
- else
- {
- if (j != 0) //вывод очередной цифры, кроме первой
- std::cout << dgt;
- dgt = tmp;
- if (cnt_9 != 0) // вывод 9-ок
- for (int i = 0; i < cnt_9; i++)
- std::cout << 9;
- cnt_9 = 0;
- }
- if (j == 1) std::cout << ","; // для красивого вывода
- }
- std::cout << dgt; // вывод последней цифры
- }
- int main()
- {
- std::cout << "pi = ";
- Pi(1000); // запуск функции
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement