现在的位置: 首页 > 综合 > 正文

Summary

2018年05月03日 ⁄ 综合 ⁄ 共 1266字 ⁄ 字号 评论关闭

Summary

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 0    Accepted Submission(s): 0

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(N1)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 n100 -1000000000ai1000000000
 
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.

/*题解:
很简单的题,但是需要注意测试数据的范围,用__int64输出结果
*/

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
__int64 a[110],b[10000],sum;
int main()
{
    int i,j,k,n;
    while(scanf("%d",&n)!=EOF)
	{
		memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        for(i=0; i<n; i++)
            scanf("%I64d",&a[i]);
        for(i=0,k=0; i<n-1; i++)
		{
            for(j=i+1; j<n; j++)
			{
                b[k++] = a[i]+a[j];
            }
        }
        sort(b,b+k);
        for(i=1,sum=b[0]; i<k; i++)
		{
            if(b[i]!=b[i-1])
                sum+=b[i];
            else
                continue;
        }
        printf("%I64d\n",sum);
    }
}

抱歉!评论已关闭.