2815: 练46.1 求π的值

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:12 解决:5

题目描述

根据公式:$arctanx(x)=x-\frac{x^3}{3}+\frac{x^5}{5}-\frac{x^7}{7}+...$和$π=6arctanx(\frac{1}{\sqrt{3}})$。
定义函数 $arctanx(x)$,求当最后一项小于$10^{-6}$时$π$的值。

输入

输出

$π$ 的值。保留到小数点后$10$位。

样例输入 复制

样例输出 复制

提示

#include<bits/stdc++.h>
using namespace std;
double f(double x,int y){
    double ans=1;
    for(int i=1;i<=y;i++) ans*=x;
    return ans;
}
double arctanx(double x){
    double ans=0;
    for(int i=1;;i++){
        double fz=f(x,2*i-1);
        double fm=2*i-1;
        double n=fz/fm;
        if(n<0.000001) break;
        if(i%2==1) ans+=fz/fm;
        else ans-=fz/fm;
    }
    return ans;
}
int main(){
    double pi=6*arctanx(1.0/sqrt(3));
    printf("%.10lf",pi);
    return 0;
}