uva 10883 - Supermean( 找规律, log( c(n,m)) )
来源:互联网 发布:洛阳青峰网络人事 编辑:程序博客网 时间:2024/05/08 15:41
题意:给出n个数,每相邻两个数求平均数,将得到n-1个数,这样循环下去,直到得到最后一个数,求这个数?
解析:设这个数为x, 经过分析可得2^(n-1)*x=a[i]*c(n-1,i)的和(0<=i<=n-1), 所以关键就是求c(n-1,i)/(2^(n-1))
设 f[x]=log(x!);则 log( c (n,m)/(2^(n-1) ) )=f[n]-f[m]-f[n-m]-n*(log(2.0));
再用exp()返回结果就可以了
#include<iostream>#include<cstdio>#include<math.h>using namespace std;#define N 50005double a[50005],f[N];void inint(){ f[0]=0; for(int i=1;i<N;i++) f[i]=f[i-1]+log(i*1.0);}double c(int n,int m){ return f[n]-f[m]-f[n-m]-n*(log(2.0));}int main(){ int i,t,T,n,j; scanf("%d",&T); double res,x; inint(); for(t=1;t<=T;t++) { scanf("%d",&n); res=0; for(i=0;i<n;i++) { scanf("%lf",&a[i]); x=a[i]*exp(c(n-1,i)); res+=x; } printf("Case #%d: %.3lf\n",t,res); } return 0;}
- uva 10883 - Supermean( 找规律, log( c(n,m)) )
- UVa 10883 Supermean(log压缩)
- hdu 5601 N*M bulbs(找规律)
- Uva 10883 - Supermean 解题报告(对数)
- UVA 10883 - Supermean(组合数学+数值优化)
- 工大山大联谊1001 N!(找规律)
- HDOJ 2674 N!Again(找规律)
- uva 579 ClockHands(找规律)
- uva 846 Steps(找规律)
- UVA Searching for Nessy(找规律)
- uva 11636 Hello World!(找规律)
- uva 10706 Number Sequence(找规律)
- UVa 11401 Triangle Countin(找规律)
- hdu 5601 N*M bulbs(规律)
- hdu 5601 N*M bulbs 找规律
- CodeForces 631C Report(找规律)
- UVa 10883 - Supermean (杨辉三角 通过取对数解决大数除大数)
- UVA - 10883 Supermean
- 《Essential C++》笔记三(3)、使用iostream iterators
- Windows XP SP3也支持多用户远程桌面连接
- Key/Value存储引擎——Bitcask的Java实现
- jsp路径获取
- 求字符串中的最长回文子串
- uva 10883 - Supermean( 找规律, log( c(n,m)) )
- 毕业5年决定人的一生(转)-- 大家千万不要错过这篇文章
- 5.5
- OCP-1Z0-052-V8.02-12题
- 堆栈
- JavaSwing图形界面编程之JButton(一)
- 判断单链表中是否存在环
- 栈的定义以及不同的存储结构的AVA实现
- Q & A: The difference between hard and soft links