您的位置:首页 > 其它

hdoj-4989-Summary

2016-07-21 21:43 246 查看
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 a 1, a 2, ……a n separated by exact one space. Process to the end of file.

[Technical Specification]

2 <= n <= 100

-1000000000 <= a i <= 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.

就是一个序列,和除了后面的每个数求和,然后组成一个新的序列,然后再去重,然后再求和,暴力开干

#include<cstdio>
#include<cstring>
#include<iostream>
#include<set>
#include<algorithm>
using namespace std;

typedef long long ll;
set<ll>s;

int main()
{
int n;
ll a[105];
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++) scanf("%lld",&a[i]);
s.clear();
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
ll sum=a[i]+a[j];
//printf("         %d\n",sum);
s.insert(sum);
}
ll val=0;
set<ll>::iterator it;
for(it=s.begin();it!=s.end();it++)
{
//cout<<*it<<endl;
val+=*it;
}
printf("%lld\n",val);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: