链接: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;
}
来源:CSDN
作者:weixin_45842249
链接:https://blog.csdn.net/weixin_45842249/article/details/103811370