UVa 10883 超级平均数(二项式系数+对数计算)

Posted 谦谦君子,陌上其华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa 10883 超级平均数(二项式系数+对数计算)相关的知识,希望对你有一定的参考价值。

https://vjudge.net/problem/UVA-10883

题意:

给出n个数,每相邻两个数求平均数,依次类推,最后得到1个数,求该数。

 

思路:

演算一下可以发现最后各个数的系数就是二项式系数。

但是n太大,直接计算会溢出。

所以,这里要用对数计算。(cmath中的log默认以e为底)

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<vector>
 6 #include<stack>
 7 #include<queue>
 8 #include<cmath>
 9 #include<map>
10 using namespace std;
11 
12 int n;
13 
14 int main()
15 {
16     //freopen("D:\\input.txt","r",stdin);
17     int T;
18     scanf("%d",&T);
19     for(int kase=1;kase<=T;kase++)
20     {
21         scanf("%d",&n);
22         double ans=0,c=0;
23         for(int i=0;i<n;i++)
24         {
25             double x;
26             scanf("%lf",&x);
27             if(x>0)  ans+=exp(c+log(x)-(n-1)*log(2));
28             else if(x<0)  ans-=exp(c+log(-x)-(n-1)*log(2));
29             c=c+log(n-i-1)-log(i+1);
30         }
31         printf("Case #%d: %.3f\n",kase,ans);
32     }
33     return 0;
34 }

 

以上是关于UVa 10883 超级平均数(二项式系数+对数计算)的主要内容,如果未能解决你的问题,请参考以下文章

UVA 10883 Supermean

uva10105-多项式系数

HZOI2015帕秋莉的超级多项式

Irrelevant Elements UVA-1635 (二项式定理)

实验8 河流流量估计与数据插值

numpy数据平滑