一年多没做题了,今天做了个现参赛的水题,第一感觉题目苦涩,没读懂
,然后坚持读了几遍,懂了边思考啊,就有了成果。
可写的有两点吧:
1:推导,期望值ans 的组成:第一次的均值+待定均值
即ans =(a1+...an)/n+ans*m/n
最后结果:ans =(a1+..an)/(n-m);
由公式也可以看出 n!=m 由题意也可n==m时 是inf
2:精确度问题,以前老犯这错误,都是模模糊糊滴过了,这次尤其注意了一下
在判断 sum ==0 时 ,用 int 定义 sum 判断 ,AC ,用 double 判断 意料之中的
最熟悉 的 wrong anser ...
楼主也不小白式的讲解了,提供两个连接供大家学习一个是微软的官方资料
一个是脚步之家的博客
http://technet.microsoft.com/zh-cn/library/system.double
http://www.jb51.net/article/36935.htm
最后贴个小白代码勿喷~哈:
#include <stdio.h> int main() { int n,m; double ans; while(scanf("%d",&n)==1) { int sum=0; for(int i=0;i<n;i++) { int temp; scanf("%d",&temp); sum+=temp; } scanf("%d",&m); for(int i=0;i<m;i++) { int temp; scanf("%d",&temp); } if(sum==0) { printf("0.00\n");continue; } if(n==m) { printf("inf\n");continue; } ans=(double)sum/(n-m); printf("%.2lf\n",ans); } return 0; }
记录几个没仔细看的网址:
http://book.51cto.com/art/201204/326994.htm
blog.csdn.net/xiaozzhao/article/details/7450042
http://blog.csdn.net/sgnaw/article/details/12442