#include \n#include \n\nclass HighPrecisionNumber {\npublic:\n HighPrecisionNumber() {\n digits.push_back(0);\n }\n\n void multiplyByInteger(int num) {\n int carry = 0;\n for (int i = 0; i < digits.size(); i++) {\n int product = digits[i] * num + carry;\n digits[i] = product % 10;\n carry = product / 10;\n }\n while (carry > 0) {\n digits.push_back(carry % 10);\n carry /= 10;\n }\n }\n\n void divideByInteger(int num) {\n int remainder = 0;\n for (int i = digits.size() - 1; i >= 0; i--) {\n int dividend = digits[i] + remainder * 10;\n digits[i] = dividend / num;\n remainder = dividend % num;\n }\n while (digits.back() == 0 && digits.size() > 1) {\n digits.pop_back();\n }\n }\n\n void printToFile(std::ofstream& file) const {\n for (int i = digits.size() - 1; i >= 0; i--) {\n file << digits[i];\n }\n file << std::endl;\n }\n\nprivate:\n std::vector digits;\n};\n\nvoid calculatePi() {\n HighPrecisionNumber pi;\n HighPrecisionNumber temp1;\n HighPrecisionNumber temp2;\n\n int n = 1;\n while (true) {\n temp1 = pi;\n temp1.multiplyByInteger(16);\n temp2 = pi;\n temp2.multiplyByInteger(4 * n - 2);\n temp1.divideByInteger(8 * n + 1);\n temp2.divideByInteger(8 * n + 4);\n temp1 = temp1 - temp2;\n\n pi = pi + temp1;\n\n pi.printToFile(outputFile);\n\n n++;\n }\n}\n\nint main() {\n std::ofstream outputFile("pi.txt");\n calculatePi();\n outputFile.close();\n return 0;\n}