PAT 1070. 结绳(25)
Posted 来一点音乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT 1070. 结绳(25)相关的知识,希望对你有一定的参考价值。
给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串连后,原来两段绳子的长度就会减半。
给定N段绳子的长度,你需要找出它们能串成的绳子的最大长度。
输入格式:
每个输入包含1个测试用例。每个测试用例第1行给出正整数N (2 <= N <= 104);第2行给出N个正整数,即原始绳段的长度,数字间以空格分隔。所有整数都不超过104。
输出格式:
在一行中输出能够串成的绳子的最大长度。结果向下取整,即取为不超过最大长度的最近整数。
输入样例:
8 10 15 12 3 4 13 1 15
输出样例:
14
1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 #include<stdlib.h> 5 int cmp(const void *a,const void *b){ 6 return *(double*) a-*(double*) b; 7 } 8 int main(){ 9 int n; 10 double a[10010]; 11 scanf("%d",&n); 12 for(int i=0;i<n;i++){ 13 scanf("%lf",&a[i]); 14 } 15 qsort(a,n,sizeof(double),cmp); 16 double sum = a[0]; 17 for(int i=1;i<n;i++){ 18 sum = (sum+a[i])/2; 19 20 } 21 printf("%d",(int) sum); 22 23 }
以上是关于PAT 1070. 结绳(25)的主要内容,如果未能解决你的问题,请参考以下文章