您的位置:首页 > 其它

HDU 4989 Summary(数学题暴力)

2014-09-07 22:52 225 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4989

Problem Description

Small W is playing a summary game. Firstly, He takes N numbers. Secondly he takes out every pair of them and add this two numbers, thus he can get N*(N - 1)/2 new numbers. Thirdly he deletes the repeated number of the new numbers. Finally he gets the sum of
the left numbers. Now small W want you to tell him what is the final sum.



Input

Multi test cases, every case occupies two lines, the first line contain n, then second line contain n numbers a1, a2, ……an separated by exact one space. Process to the end of file.

[Technical Specification]

2 <= n <= 100

-1000000000 <= ai <= 1000000000



Output

For each case, output the final sum.



Sample Input

4
1 2 3 4
2
5 5




Sample Output

25
10
HintFirstly small W takes any pair of 1 2 3 4 and add them, he will get 3 4 5 5 6 7. Then he deletes the repeated numbers, he will get 3 4 5 6 7, Finally he gets the sum=3+4+5+6+7=25.




Source

BestCoder Round #8

代码如下:

//#pragma warning (disable:4786)
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <cstdlib>
#include <climits>
#include <ctype.h>
#include <queue>
#include <stack>
#include <vector>
#include <utility>
#include <deque>
#include <set>
#include <map>
#include <iostream>
#include <algorithm>
using namespace std;
#define INF 1e18
//typedef long long LL;
typedef __int64 LL;
int main()
{
    int n;
    LL a[7000], b[7000];
    while(~scanf("%d",&n))
    {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        for(int i = 0; i < n; i++)
        {
            scanf("%I64d",&a[i]);
        }
        int l = 0;
        for(int i = 0; i < n-1; i++)
        {
            for(int j = i+1; j < n; j++)
            {
                b[l++] = a[i]+a[j];
            }
        }
        sort(b,b+l);
        for(int i = 1; i < l; i++)
        {
            if(b[i] == b[i-1])
                b[i-1] = 0;
        }
        LL sum = 0;
        for(int i = 0; i < l; i++)
        {
            sum+=b[i];
        }
        printf("%I64d\n",sum);
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: