XDOJ 另一个简单游戏

来源:互联网 发布:理发软件 编辑:程序博客网 时间:2024/05/16 05:00

1042: 另一个简单游戏

时间限制: 1 Sec  内存限制: 128 MB
提交: 108  解决: 25
[提交][状态][讨论版]

题目描述

现在有n个数,每次可以取出任意两个数x,y,然后加入一个数为(x+y)/2,问最后剩下的那个数最大是多少?

输入

有多组输入数据,第一行为一个数字T,代表有T组输入数据 (0<T20)

接下来为T组数据。

每组测试数据分2行:

第一行为n,表示有n个数(1n100

接下来的一行有n个正整数ai表示初始的n个数(1ai100001in)

输出

对于每组数据,在一行山上输出一个实数(保留两位小数),表示最后剩下数的可能的最大值。

样例输入

231 2 342 3 1 5

样例输出

2.253.63
思路:由于越到后面加的数字权重越大,故可以先从小到大排序,按题目要求运算;

#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;int main(){    int T;    scanf("%d",&T);    while(T--)    {        int n;        double A[110];        scanf("%d",&n);        for(int i=0;i<n;i++)        {            scanf("%lf",&A[i]);        }        int i;        sort(A,A+n);        for( i=0;i<n-1;i++)        {            A[i+1]=(A[i]+A[i+1])/2;        }        printf("%.2f\n",A[i]+(1e-10));    }    return 0;}




0 0
原创粉丝点击