#include \n#include \n#include \n\nclass BigNumber {\npublic:\n BigNumber() {\n digits.push_back(0);\n }\n\n void multiplyBy(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) {\n digits.push_back(carry % 10);\n carry /= 10;\n }\n }\n\n void divideBy(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 }\n\n std::string toString() const {\n std::string result;\n for (int i = digits.size() - 1; i >= 0; i--) {\n result += std::to_string(digits[i]);\n }\n return result;\n }\n\nprivate:\n std::vector digits;\n};\n\nvoid calculatePi() {\n int precision = 0;\n BigNumber pi;\n\n std::ofstream outputFile("pi.txt");\n\n while (true) {\n // 计算圆周率的公式\n int numerator = pow(10, precision + 1) * (4 * pow(10, precision) - 2 * pow(10, precision - 1));\n int denominator = pow(10, 2 * precision) * (2 * precision + 1);\n BigNumber term;\n term.multiplyBy(numerator);\n term.divideBy(denominator);\n\n pi.multiplyBy(10);\n pi.digits[0] += term.digits[0];\n\n if (precision % 10 == 0) {\n std::cout << "Current precision: " << precision << std::endl;\n }\n\n outputFile << pi.toString() << std::endl;\n precision++;\n }\n}\n\nint main() {\n calculatePi();\n return 0;\n}