f256 - 宇辰的平均成績
題目描述
題目要求計算宇辰的平均成績,並判斷是否及格。及格標準為平均成績大於等於 60 分。輸入為多行,每行包含科目成績和學分數,直到 EOF 為止。
解題思路
這題的解題思路很直接。我們需要計算加權平均數,也就是將每科目的成績乘以學分數,然後加總,再除以總學分數。程式碼使用迴圈讀取每科目的成績和學分數,並累加總成績和總學分數。最後,計算平均成績,並根據是否大於等於 60 分輸出不同的結果。
複雜度分析
- 時間複雜度: O(N),其中 N 是輸入的科目數量。因為程式碼需要遍歷所有科目來計算總成績和總學分數。
- 空間複雜度: O(1),程式碼只使用了幾個整數變數來儲存中間結果,空間使用量不隨輸入規模變化。
程式碼
#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector,fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#include <stdio.h>
int g,c,all,ans;
inline int read(){
int a(0);
char c('0');
while(c>='0'){
a=(a<<3)+(a<<1)+c-'0';
c=getchar_unlocked();
}
return a;
}
int main(){
while(g=read(),c=read()){
all+=g*c;
ans+=c;
}
all/=ans;
if(all>=60)
printf("Oh wow! You pass it!\n%d",all);
else
printf("YEEEEEE!!!");
}