1 条题解

  • 0
    @ 2064-11-15 10:00:56

    练46.1 求π的值

    解题思路

    自定义arctan函数,幂项从x开始,每次乘-x²生成下一奇次幂,除以对应奇数。把首个绝对值小于1e-6的末项也加完后结束,再乘6求π近似。

    正确性说明

    计算规则直接来自题目定义。按所述顺序处理时,已完成部分的结果被准确保存在累加量、计数或当前状态中;下一步只加入新增贡献。最终得到完整要求的结果。

    易错点

    题目要求按截断条件计算,不能直接输出系统π常数;十位小数。

    复杂度

    累加k项,时间O(k),空间O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    double atanSeries(double x) {
        double power = x, sum = 0;
        int d = 1;
        while (true) {
            double term = power / d;
            sum += term;
            if (fabs(term) < 1e-6)
                break;
            power *= -x * x;
            d += 2;
        }
        return sum;
    }
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        cout << fixed << setprecision(10) << 6 * atanSeries(1 / sqrt(3.0)) << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    319
    时间
    1000ms
    内存
    128MiB
    难度
    进阶
    标签
    递交数
    0
    已通过
    0
    上传者