b914 - 神奇寶貝1.聯盟賽
題目描述
題目描述了神奇寶貝聯盟賽集數的決定方式。集數由高層投票內容的總和除以高層人數後四捨五入得到。程式需要讀取高層人數 n,以及每位高層的投票內容 m,計算並輸出聯盟賽的集數。
解題思路
題目要求計算平均數並進行四捨五入。程式首先讀取高層人數 n,然後迴圈讀取每位高層的投票內容 m 並計算總和 sum。接著,計算平均數 st = sum / t (其中 t 等於 n)。最後,使用一個條件判斷式來判斷是否需要向上取整。如果 (st * t * 2) + t <= sum << 1,則表示平均數需要向上取整,輸出 sum / t + 1;否則,輸出 sum / t。使用位移運算符 << 1 等同於乘以 2,可以避免使用浮點數。
複雜度分析
- 時間複雜度: O(n)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int main(){
cin.tie(0); ios::sync_with_stdio(false);
int n,x;
while(cin >> n){
int sum(0),t=n,st;
if(n==0)
cout << "0\n";
else{
while(n--){
cin >> x;
sum+=x;
}
st=sum/t;
(st*t*2)+t<=sum<<1?cout << sum/t+1 << '\n':cout << sum/t << '\n';
}
}
}