# Greedy# Basic Math

f256 - 宇辰的平均成績

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算宇辰的平均成績,並判斷是否及格。及格標準為平均成績大於等於 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!!!");
}

Discussion