MOI 2020

MOI2020 比賽規則

比賽輪次

本年度比賽分為兩輪:

  1. 第一輪為線上試,統一時間舉行,分別在參賽者所屬學校內舉行,由各校負責老師進行監考。第一輪決定金、銀、銅獎項,參賽總人數的 50%(且獲得分數者)可以獲金、銀、銅獎,金、銀、銅獎的人數比例約為 1:2:3。第一輪成績同時決定參加第二輪的資格,進行第二輪的條件如下:

    1. 第一輪排在前十五名者可以參加第二輪。
    2. 排名在前五名的女同學可以參加第二顁。
    3. 不足 2 名同學參加第二輪的學校按照第一輪排名補足至 2 人。。
  2. 第二輪為集中考試,目的主要是選出參加 NOI2020 的人選,兩輪單獨計分,代表隊的人選只以第二輪得分計算。

比賽形式及計分方法

  1. 每輪比賽均為 4 小時,題目數目為 6 至 10 題。每題單獨計分,正確答案的滿分為 100 但最高可能獲得分為 110(見下說明)。以所有題目的總實際得分進行最後排名。

  2. 每題計分方法:每題先以正確答案得分來排名,相同正確答案得分者則以先提交答案者排名。然後按以下方法計分: 設學生 A某題排名為 R,得分為 M,則其實得分為:

    SCORE = M * (1 + 0.1 / 2 ^ (R - 1))
    
  3. 第一輪在 6 月 14 日舉行,而第二輪在 6 月 21 日舉行。

新輸入題型

本年比賽開將會有一個測試點包含多個測試數據的輸入形式,具體見以下例子。

例題:

請編寫一程式計算出數列總和。

輸入

輸入包含多組數據,每組數據的格式均如下:

第一行包含一個整數 N,代表數列中有多少個整數,第二行則有 N 個整數。

最後一組數據只有一個 0 ,其後沒有任何數據。

輸出

對應於每組輸人數据,請輸出該數列的總和。每個輸出須單獨佔一行。每個數列的總和都均不大於 10^9.

輸入範例

3
1 2 4
2
3 7
0

輸出範例

7
10

參考程式:

#include <iostream>
using namespace std;

int main() {
    int N;
    while (1) {
        cin >> N;
        if (N == 0) break;
        int sum = 0, v;
        for (int i = 0; i < N; i++) {
            cin >> v;
            sum += v;
        }
        cout << sum << endl;
    }
    return 0;
}

注意事項:

  • 以上例子中,輸入檔案中每個數據均為獨立數據,因此程式中所用到的變量應重新初始化。
  • 最後一個數據 0 通常只是用以標示數據的結尾,一般是沒有任何對輸出的。
  • 程式必須通過測試數據檔內的每一組數據才可取得該測試檔的分數。
  • 雖然這裹我們提及測試數據“檔”,但程式內輸人輸出的部份並不需要到任何有關檔案翰入輸出的程式
  • 一般情況下,題目內是不會給出每個輸人檔案內的測試數據(組)的數目。