您的位置:首页 > 其它

hdu 4989 Summary三种方法

2014-09-08 21:40 232 查看


Summary

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 153 Accepted Submission(s): 105



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


#include<iostream>

#include<cstdio>

#include<cstdlib>

#include<cstring>

#include<algorithm>

#include<vector>

#include<stack>

#include<queue>

#include<set>

#include<map>

#include<cmath>

using namespace std;

typedef long long LL;

const int MAX=0xfffffff;

LL a[110];

vector<LL>b;

int main( )

{

//freopen("1.txt","r",stdin);

int n;

while(scanf("%d",&n)!=EOF)

{

for(int i=1;i<=n;i++)

scanf("%I64d",&a[i]);

b.clear();

for(int i=1;i<=n;i++)

for(int j=i+1;j<=n;j++)

{

LL t=a[i]+a[j];

b.push_back(t);

}

sort(b.begin(),b.end());

vector<LL>::iterator iter=unique(b.begin(),b.end());

b.erase(iter,b.end());

LL sum=0;

for(vector<LL>::iterator i=b.begin();i!=b.end();i++)

sum+=*i;

printf("%I64d\n",sum);

}

return 0;

}

#include<iostream>

#include<cstdio>

#include<cstdlib>

#include<cstring>

#include<algorithm>

#include<vector>

#include<stack>

#include<queue>

#include<set>

#include<map>

#include<cmath>

using namespace std;

typedef long long LL;

const int MAX=0xfffffff;

LL a[110];

LL b[5050];

int main( )

{

//freopen("1.txt","r",stdin);

int n;

while(scanf("%d",&n)!=EOF)

{

for(int i=1;i<=n;i++)

scanf("%I64d",&a[i]);

int cnt=-1;

for(int i=1;i<=n;i++)

for(int j=i+1;j<=n;j++)

b[++cnt]=a[i]+a[j];

sort(b,b+cnt+1);

LL sum=0;

for(int i=0;i<=cnt;i++)

{

if(i!=0&&b[i]==b[i-1])

continue;

else

sum+=b[i];

}

printf("%I64d\n",sum);

}

return 0;

}

#include<iostream>

#include<cstdio>

#include<cstdlib>

#include<cstring>

#include<algorithm>

#include<vector>

#include<stack>

#include<queue>

#include<set>

#include<map>

#include<cmath>

using namespace std;

typedef long long LL;

const int MAX=0xfffffff;

LL a[110];

LL b[5050];

int main( )

{

//freopen("1.txt","r",stdin);

int n;

while(scanf("%d",&n)!=EOF)

{

for(int i=1;i<=n;i++)

scanf("%I64d",&a[i]);

int cnt=-1;

for(int i=1;i<=n;i++)

for(int j=i+1;j<=n;j++)

b[++cnt]=a[i]+a[j];

sort(b,b+cnt+1);

LL t=unique(b,b+cnt+1)-b;

LL sum=0;

for(int i=0;i<t;i++)

{

sum+=b[i];

}

printf("%I64d\n",sum);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: