Help Me(找规律)

链接:https://ac.nowcoder.com/acm/contest/877/B
来源:牛客网

题目描述

有一天Miss Quan出了一个题,给出一个长度为的数组

Miss Quan说给我计算下这个权值等于多少,然后随手写了一个式子,把她的小伙伴们都给惊呆了,这是什么鬼......

比如

听到这里,小伙伴们说这不是很简单吗,于是写出了下面的代码:

Miss Quan会心一笑,大家意识到事情并不简单,这个解法时间复杂度太高了,你能想出更好的计算Value的方法吗?只需要输出Value的值即可。

输入描述:

第一行输入一个整数代表共有组数据

对于每组测试用例第一行输入一个整数第二行输入个数

输出描述:

对于每组数据,输出一行,一个整数代表的值.

示例1

输入

复制

2
3
1 4 2
2
10 20

输出

复制

14
100

示例2

输入

复制

1
4
5 6 8 7

输出

复制

20

多写几个就能找出规律了

#include <cstdio>
int t,n;
long long a[50005];
int main() {
    scanf("%d", &t);
    while(t--){
        scanf("%d", &n);
        for (int i = 1; i <= n; ++i) 
		    scanf("%lld", &a[i]);
        long long sum = 0, ans = 0;
        for (int i = 1; i <= n; ++i) {
            ans -= 2 * sum * a[i];
            sum += a[i];
            ans += a[i] * a[i] * (n - 1);
        }
        printf("%lld\n", ans);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/red_red_red/article/details/89526316