110新北市資訊學科能力競賽題目

競賽日期:110/11/10(三),可攜帶參考書、隨身碟。
7:30-8:00 報到
8:00-8:30 競賽須知說明
8:30-8:50 選手準備時間
8:50-11:50 實作題(一) 7題 3小時
11:50-1:00 午餐(有便當)、午休
1:00-3:00 實作題(二) 5題 2小時
3:00-4:20 整理成績
4:20-4:50 頒獎

p1. 鋪磁磚問題

輸入n,代表有一個1×n的地板,你可以使用1×1、1×2、1×3大小的磁磚去鋪它。請問有幾種鋪法?

解法:x+2y+3z=n

p2. 製作看板

第一行輸入R、C,第二行輸入一個字串,第三行輸入R×C的字元,「#」代表不可放文字,「.」代表可以放文字,將字串填入「.」後輸出。如果字串長度小於「.」的長度,則將剩餘的「.」平分在文字前後。

解法:簡單題。假設字串長度是4,空格數是8,即○○●●●●○○,因此要先空(8-4)/2=2。

#include <bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(0), cin.tie(0);
    int r, c;
    string s;
    cin >> r >> c >> s;
    char arr[r][c], blank=0;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cin >> arr[i][j];
            if(arr[i][j]=='.') blank++;
        }
    }
    int a = (blank-s.length())/2;
    int index = 0;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            if(arr[i][j]=='#') cout << '#';
            else{
                if(index < a || index >= a+s.length()){
                    cout << '.';
                    index++;
                }else{
                    cout << s[index-a];
                    index++;
                }
            }
        }
        cout << '\n';
    }
}

p3. 質數切割法

輸入L,代表木棒長度,輸出最小切割成本。將這條木棒放到工作台上,切割成本為木棒長度L。將木棒分割成長度皆為質數的兩段。如果該段木棒還可以再分割,則再把該木棒放在工作台上,切割成本為該段長度。舉例:
❶ (10) → 3 + (7) → 2 + (5) → 2 + 3,成本為10+7+5=22。
❷ (10) → (5) + (5) → 2+3+2+3,成本為10+5+5=20。
所以 ❷ 比 ❶ 還要好。

p4. 隊伍分配

p5. 大雄的煩惱

p6. 末日危機

p7. 旅行推銷員問題

p8. 賓果遊戲

p9. 報表排序

p10. 病毒傳播

p11. 機器人出任務

p12. 雙洞推盤遊戲

題目PDF:https://drive.google.com/drive/folders/1TBsvLe8jVGh-M3aJVC7t3XCFkpJs6HVn?usp=sharing

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *