zoukankan      html  css  js  c++  java
  • 5-15 计算圆周率

    根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。

    (frac{pi}{2} = 1+frac{1}{3} + frac{2!}{3 imes 5}+ frac{3!}{3 imes 5 imes 7}+cdots + frac{n!}{3 imes 5 imes 7 imes cdots imes (2n+1)}+cdots) ​

    输入格式:

    输入在一行中给出小于1的阈值。

    输出格式:

    在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。

    输入样例:

    0.01
    

    输出样例:

    3.132157
    

    解题思路:

    • 程序的实现不难,分子,分母,累加和分开设置即可。
    • 主要卡在数据点上。如果对数据的精度要求较高,计算结果的式子应该全为 double 型,即使有些变量(说的是参与除了加减之外的情况)只需要 int 型,也需要定义成 double 型。

    解题代码:

    #include<stdio.h>
    
    int main ()
    {
    	double threshold;
    	scanf("%lf", &threshold);
    	
    	double fact = 1; // fact 要定义为 double,不然会导致精度降低 
    	int i = 1;
    	double de = 1.0;
    	double threshold_calc;
    	double pi_half = 1.0;
    	
    	do {
    		fact = fact * i;
    		de = de * (2 * i + 1);
    		i++;
    		pi_half = pi_half + fact / de;
    		threshold_calc = fact / de;
    	} while (threshold_calc >= threshold);
    	
    	printf("%f
    ", pi_half * 2.0);
    	
    	return 0;
    }
  • 相关阅读:
    (6)sql/puls
    (5)Toad for oracle使用
    (4)oracle连接工具和配置监听
    (3)oracle建用户、建表、权限、命名空间
    (2)oracle服务、建库
    (1)oracle安装、卸载、启动、关闭、登陆以及同时遇到的问题
    (1)C#工具箱-公共控件1
    Tarjan
    最小表示法
    STL
  • 原文地址:https://www.cnblogs.com/andywenzhi/p/5734376.html
Copyright © 2011-2022 走看看