Summary
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 835 Accepted Submission(s): 424
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
[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
开long long 就好。
#include<iostream> #include <stdio.h> #include <algorithm> using namespace std; const int N = 105; long long a[N],b[N*N]; int main() { int n; while(scanf("%d",&n)!=EOF){ for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); } int id = 0; for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ b[id++] = a[i]+a[j]; } } sort(b,b+id); long long sum = b[0]; for(int i=1;i<id;i++){ if(b[i]==b[i-1]) continue; sum=sum+b[i]; } printf("%lld ",sum); } return 0; }