1070 结绳
思路:
- 用一个double数组存储所有的绳长数据。
- 用sort指令对数组进行升序排序
- 设double量ans=最短两根绳子长度之和除以2,然后每次把剩下的绳子里最短的那根和ans相加再除以2,值再赋给ans。
- 把最后得到的值用int(ans)处理即可得到向下取整的答案
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
double Q[10005];
int main(void) {
int n; cin >> n;
for (int i = 0; i < n; i++) {
cin >> Q[i];
}
sort(Q, Q + n);
double ans = (Q[0] + Q[1]) / 2;
for (int i = 2; i < n; i++) {
ans = (ans + Q[i]) / 2;
}
cout << int(ans);
return 0;
}