zoukankan      html  css  js  c++  java
  • 西安电子科技大学第16届程序设计竞赛网络同步赛 另一个另一个简单游戏

    链接:https://www.nowcoder.com/acm/contest/107/D
    来源:牛客网

    题目描述

    现在有n个数,每次随机取出两个数x,y,然后加入一个数为(x+y)/2,问最后剩下的那个数的期望是多少?

    输入描述:

    有多组输入数据,第一行为一个数字T,代表有T组输入数据 (0<T≤20)。
    接下来为T组数据。
    每组测试数据分2行:
    第一行为n,表示有n个数(1≤n≤100)
    接下来的一行有n个正整数ai,表示初始的n个数(1≤ai≤10000,1≤i≤n)。

    输出描述:

    对于每组数据,在一行上输出最后剩下数的期望值的整数部分。
    示例1

    输入

    2
    3
    1 1 1
    2
    2 3

    输出

    1
    2

    现有数字a,b,c.那么abc的平均值为(a+b+c)/3;

    取出两个数,只有可能三种情况,ab,ac,bc;

    这三种情况,每一种的概率是相等的;

    而每种情况的平均值分别为((a+b)/2+c)/3,((a+c)/2+b)/3,((b+c)/2+a)/3;      //如果看不清楚请手动模拟啊

    而对于新数列,肯定也有一个平均值,我们假设d=((a+b)/2+c)/3,那么对于第一种情况,平均值就是(d+c)/2;

    刚刚说过,每种情况的概率相等,也就是说,对于新的三个数列,平均值的期望可以很容易算出,就是把三个数列的平均值加起来除以三;

    经过计算,很容易得出,新数列平均值的期望,就是(a+b+c)/3,也就是说,新数列的平均值值的期望,相较于原数列的平均值,是相等的;

    对于最后一个数列,将只有一个元素,也就是题中描述的那个数,这个数列的平均值就是它自己,所以求它的期望,就是求它的平均值的期望,那么由上面的结论一步步递推下来,就可以得出,这个期望,就是原数组的平均值;

    于是,我们只需要求平均值就行了;

    #include<iostream>
    using namespace std;
    int main()
    {
        int T;
        cin>>T;
        while(T--){
            int a,sum,n;
            cin>>n;
            sum=0;
            for(int i=0;i<n;i++){
                cin>>a;
                sum+=a;
            }
            cout<<sum/n<<endl;
        }
    }
  • 相关阅读:
    ARM IIC接口
    ARM硬件问题转载
    自动排版
    书签
    ARM硬件问题转载
    ATPCS规则1
    开发硬件所需的知识
    今天很崩溃呀
    回顾一下
    ARM汇编条件码
  • 原文地址:https://www.cnblogs.com/ZGQblogs/p/8921144.html
Copyright © 2011-2022 走看看