首页 > 代码库 > PAT 1070. 结绳(25)
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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。