题解 UVA10883 【Supermean】

· · 题解

首先这题的大概意思为:给定n组数,每组相邻两个之间取平均值,这样就少了一个数值,重复下去 直到只剩下一个,保留3位小数按样例输出

这题,题面一看,瞬间想到,用模拟就好了嘛

用一个数组存数值然后一直把数组里的数改为自己与后一个的平均值 最后输出

用一个二重循环就能搞定

#include<bits/stdc++.h>//万能头
using namespace std;
double e[100001];
int r;
int main(){

    int n;
    scanf("%d",&n);
    int k;
    for(int i=1;i<=n;i++){
        scanf("%d",&k);
        for(int j=1;j<=k;j++){
            scanf("%lf",&e[j]);//输入数据
        }//重要循环↓
        for(int j=k-1;j>=1;j--){//两重循环判断平均值
            for(int t=1;t<=j;t++){
                e[t]=(e[t]+e[t+1])/2.0;//平均值处理
            }
        }
        printf("Case #%d: %.3f\n",i,e[1]);//输出
    }

    return 0;
}

本人第一次发题解,求过(^_^)