Acperience

来源:互联网 发布:知乐百度网盘 编辑:程序博客网 时间:2024/04/30 18:52

Acperience

这里写图片描述
这里写图片描述
.
.
直接把所有数都取绝对值,然后求平均值就好了。
注意一下坑的地方,就是直接循环计算似乎会爆longlong(??,反正我们队当时wa了),然后推一下最终结果再计算就可以了,具体可以看看程序
.
.

#include <cstdio>#include <algorithm>#include <iostream>using namespace std;long long a[100010];long long agcd(long long x, long long y) {    while (1)     {        long long temp = x%y;        x = y;        y = temp;        if (y == 0) break;    }    return x;}long long sqr(long long x){    return x * x;}long long n;int main(){    int t;    scanf("%d", &t);    while (t--)    {        long long sum = 0, sum2 = 0;        scanf("%lld", &n);        for (int i = 1; i <= n; i++)        {            scanf("%lld", &a[i]);            if (a[i] < 0) a[i] = -a[i];            sum = sum+a[i];            sum2 = sum2+a[i]*a[i];        }        long long p = n*sum2-sum*sum;        /*for (int i = 1; i <= n; i++)        {            p = p + sqr(a[i] * n - sum);        }*/        long long q = n;        if (p % q == 0)        {            printf("%lld/1\n", p / q);        }        else        {            long long tt = __gcd(p, q);            p = p/tt; q = q/tt;            printf("%lld/%lld\n", p, q);        }    }}
0 0
原创粉丝点击