UVA10883 Supermean 题解

· · 题解

题意:

给定 n 个数,每次把相邻两数取平均值,这样就能少掉一个数,问最后剩下的数是多少。

思路:

简单大模拟一下即可。

搞个数组然后把 i 往下减,然后把从 1 到 i 的这个序列遍历修改,改到只剩 1 个数为止。

具体实现见代码吧。

代码:

#include<iostream>
using namespace std;
//卡了点小常,问题不大
double a[100005];
int n,t,i,j,k;
int main(){
    scanf("%d",&t);
    for(k=1;k<=t;k++){
        scanf("%d",&n);
        for(i=1;i<=n;i++)scanf("%lf",&a[i]);
        for(i=n-1;i>=1;--i)
        for(j=1;j<=i;++j)
        a[j]=(a[j]+a[j+1])*1.0/2;//修改求值
        printf("Case #%d: %.3lf\n",k,a[1]);//输出
    }
    return 0;
}

没卡常远古 AC 记录:https://www.luogu.com.cn/record/123146942

略微卡了点常 AC 记录:https://www.luogu.com.cn/record/136864503