BOJ|1546号



Pythonプール

N = int(input()) #과목 개수 입력
scr = list(map(int,input().split())) #점수 입력
print((sum(scr)*100/max(scr))/N) 
#점수의 합을 최고 점수로 나누고 100을 곱한 것을 과목의 갯수로 나눔

  • NNN(科目数)

  • Ak=A1,A2,...,Am,...,AnA_k = A_1, A_2, ... , A_m , ... , A_nAk​=A1​,A2​,...,Am​,...,An​
    (各科目の点数[AAM mAMは科目最高点数])

  • Bk=(A1/Am)∗100,(A2/Am)∗100,...,(An/Am)∗100B_k = (A_1/A_m)*100, (A_2/A_m)*100, ..., (A_n/A_m)*100Bk​=(A1​/Am​)∗100,(A2​/Am​)∗100,...,(An​/Am​)∗100
    (最高スコアベースの新しいスコア)

  • Answer=∑Bk/N=((∑Ak)∗100/Am)/NAnswer = ∑B_k/N = ((∑A_k)*100/A_m)/NAnswer=∑Bk​/N=((∑Ak​)∗100/Am​)/N
    (BkB kBkでは、100/AM 100/AM 100/AM 100/AMが共通であるため、それらを束ねる)

  • コードではΣAkΣAkΣAkΣAkはsum(scr)であり、Am mAmはmax(scr)である.
    従って(ΣAk)87100/AM(ΣAk)/N(ΣAk)*100/A m)/N(ΣAk)87100/AM)/Nは2479142

    C++プール


  • #include <iostream>
    
    using namespace std;
    
    int main()
    {
        ios_base::sync_with_stdio(false);
        cin.tie(NULL);
    
        int N;
        int max = 0, sum = 0;
        int arr[1001] = { 0, };
        cin >> N;
        for(int i=0;i<N;i++) {
        	int a;
        	cin >> a;
        	if (max < a) max = a;
        	arr[i] = a;
        }
        for (int i = 0; i < N; i++) {
        	sum += arr[i];
        }
        cout << (sum * 100 / max)/(float)N;
    }