变治法

﹥>﹥吖頭↗ 提交于 2020-01-02 23:03:57

链接:https://ac.nowcoder.com/acm/challenge/terminal
来源:牛客网

题目描述

现在有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

思路
变治法。最后剩下数的数学期望值,即是这n个数的平均值。

#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
inline int read() {int x=0,f=1;char c=getchar();while(c!='-'&&(c<'0'||c>'9'))c=getchar();if(c=='-')f=-1,c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return f*x;}
typedef unsigned long long ll;
const int maxn = 1e6+10;
int a[maxn];
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
	 int n;
	 cin>>n;
	 int sum=0;
	 for(int i=0;i<n;i++)
	 {
		 cin>>a[i];
		 sum+=a[i];
	 }
	 printf("%d\n",sum/n);
	 }
	 return 0;
	}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!