一、技术总结
- 题目的意思就是给出n段绳子,然后每次选取两段进行打结合成一段绳子(然后继续参与打结),但是会使得各自的长度减半。
- 显然可以知道,越长的绳子越往后进行打结,最终得到的长度越长,输出结果为取整,向下取整。
- 最后取整使用,强制类型转换。
二、参考代码
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a, int b){
return a < b;
}
int main(){
int n;
double sum = 0;
int count[10010];
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d", &count[i]);
}
sort(count, count + n, cmp);
for(int i = 0; i < n; i++){
if(i == 0){
sum += (count[i] + count[i+1]) / 2;
i += 1;
}else{
sum = (sum + count[i]) / 2;
}
}
printf("%d", (int)sum);
return 0;
}