首页 > 代码库 > HDU 4989 Summary(数学题暴力)

HDU 4989 Summary(数学题暴力)

题目链接: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
Hint
Firstly 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;
}


HDU 4989 Summary(数学题暴力)