zoukankan      html  css  js  c++  java
  • HDU 6362(求椭圆中矩形周长的期望 数学)

    题意是给定一个椭圆标准方程的a,b(椭圆的长半轴长和短半轴长),在【0,b】内取一个数,则过点(0,b)且平行于x轴的直线与椭圆交于两点,再将此两点关于x轴做对称点,顺次连接此四点构成矩形,求出这些矩形周长的期望。

    一开始的时候,想到所有矩形的周长和积分就是椭圆面积的两倍,但矩形的个数应该是 a + b,可是与样例不符......又尝试了矩形个数为a,b,π/2,均不对。再次读题,发现矩形的选择是在【0,b】中选的,那么矩形的个数就应该是b个。

    依照题意,用积分的方法做,可得:

     

    积分后得:a*b*π+2*b*b;再除以b,得到期望。

    要注意的是题目要求保留到小数点后六位,但不是四舍五入的方式,而是去尾法,这里本人用的方法是先乘以1000000去尾,再除以1000000。

    但后来发现网上还有好办法:将结果减去0.0000005,再直接四舍五入保留到后六位。妙啊~~

     1 #include <cstdio>
     2 #include <cmath>
     3 using namespace std;
     4 int main()
     5 {
     6     int t,n,m;
     7     const double p = acos(-1);
     8     scanf("%d",&t);
     9     while (t--)
    10     {
    11         scanf("%d%d",&n,&m);
    12         double ans = n*p+m*2.00;
    13         ans *= 1000000;
    14         ans = floor(ans);
    15         ans /= 1000000;
    16         printf("%.6lf
    ",ans);
    17     }
    18     return 0;
    19 }
    View Code

    个人认为椭圆面积*2应该等于所有矩形周长和,如图示,

    但结果是2*a*b*π,而非积分结果a*b*π+2*b*b,我觉得应该是椭圆上点的分布不均导致的,具体的因为才疏学浅,无法详细描述。仍在考虑中......

    日后若能有更好的想法,再来完善。 希望看到的大神不吝赐教 orz
  • 相关阅读:
    正则表达式
    浅谈xss攻击
    四舍五入[银行家算法]
    POJ-2442-Sequence(二叉堆)
    Spring MVC 启动报错
    WebMagic 抓取图片并保存至本地
    spring 定时任务
    jquery validate 自定义校验方法
    位图
    二叉树(线索化)
  • 原文地址:https://www.cnblogs.com/Taskr212/p/9455586.html
Copyright © 2011-2022 走看看