k182 - 資訊科技小考成績
題目描述
題目要求計算文文資訊科技小考的平均成績,並將結果四捨五入到小數點以下第二位,然後移除尾部的零和小數點。
解題思路
程式首先讀取小考次數 n,然後迴圈讀取每次的成績,將成績乘以 1000 加到 sum 變數中。迴圈結束後,將 sum 除以 n 得到平均成績。接著,程式進行四捨五入,如果 sum 除以 10 的餘數大於等於 5,則將 sum 除以 10 後加 1;否則,直接將 sum 除以 10。最後,程式根據 sum 的值,以不同的格式輸出平均成績,去除尾部的 0 和不必要的小數點。
複雜度分析
- 時間複雜度: O(n)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int n,sum,x;
int main(){
cin >> n;
for(int i=0;i<n;++i){
cin >> x;
sum+=x*1000;
}
sum/=n;
if(sum%10>=5){
sum/=10;
++sum;
}
else{
sum/=10;
}
if(sum%100==0){
cout << sum/100;
}
else if(sum%10==0){
cout << sum/100 << "." << sum%100/10;
}
else{
cout << sum/100 << "." << sum%100;
}
}