苦命資訊老師解題筆記

@letscoding

Public team

Joined on Oct 13, 2020

  • 上課期間:2024/07/22~2024/08/16 上課時間:每週一、三、五下午 13:30~16:30 上課班級:APCS官方暑期課程E/F班 授課教師:景美女中 賴楷宗 & 高雄女中 方珮雯 置頂公告 上課連結 點名紀錄(實際以助教群組版本為準) 課程Discord(供大家發問) 上課錄影(每日午夜新增)
     Like  Bookmark
  • 先備知識 字元 char是C/C++的基本資料型態,大小為一個位元組 (1 byte),可以儲存單一個字元。 例如,宣告一個字元型態變數ch,值為字母 A,寫法如下: char ch = 'A'; // 將字元 A 設定給字元變數 ch。 C++使用一對單引號'',將一個字元括起來,代表他的 ASCII 碼。 我們可以宣告字元變數,搭配使用cin,嘗試從鍵盤讀入一個字元:
     Like  Bookmark
  •  Like  Bookmark
  • 時間差計算 解題步驟 ==處理輸入==:使用適當資料型態的變數,處理同時有數字和冒號的輸入,獲得時間一、時間二的時、分、秒。 ==計算時間差==:使用借位法或時間單位轉換,求得時間差。 ==處理輸出==:依序判斷時、分、秒是否小於 10 ,決定輸出時前面要不要補 0 。 引導問題 ::: spoiler Q. 如何處理輸入? C++可利用一個字元變數(char)讀取中間的「:」,例如:
     Like  Bookmark
  • 函式參數之修改 Q. 函式中參數被修改,是否影響原值? A. 有兩種可能性。 在==不會影響原值==的狀況,函式會將主程式輸入的引數==複製一份==,作為函式的參數,再去做接下來的操作。符合這種狀況的參數資料型態包括:基本資料型態:如int、char、bool、float、double。 例如以下程式碼,已將主程式呼叫函式的引數值1,複製一份給函式參數a,這個a是區域變數,和主程式的a是不一樣的。無論對函式內的a如何修改,都不會影響到主程式內的a值。​​​​​​​​#include <iostream> ​​​​​​​​using namespace std; ​​​​​​​​void reset(int a){ ​​​​​​​​ a = 2;
     Like  Bookmark
  • Class 1:課程介紹 課程介紹 基礎複習 Function Ch1 解題指引 Class 2:函式實作、遞迴函式 函式實作示例 遞迴概論 Ch2 解題指引
     Like  Bookmark
  • 運算子與選擇結構 :::warning 你習慣撰寫什麼風格的程式碼呢? ::: 示例 輸入一個整數,若數字介於 $50$~$100$ 之間,則輸出Yes,否則輸出No。 ::: spoiler 法一:if-else if-else
     Like  Bookmark
  • 先備知識:帕斯卡三角形。可參考維基百科、TED:帕斯卡三角形裡的數學秘密(可調繁體中文字幕)、巴斯卡三角形的幾個性質。 以進階程式練習帳密登入景美女中程式解題系統(JMJudge) > 加入競賽:Apcs課程-遞迴練習區。 a072. 啊就階乘,簡單吧>.0 遞迴思維建立 欲求 $n!$ 的值,只要知道 $(n-1)!$ 的值,再乘以 $n$ ,即為所求。 請參考課本 2-2:遞迴函式,內有階乘函式的迴圈版本與遞迴版本。 範例程式碼 ![image](https://hackmd.io/_uploads/HyppeiA_C.png =300x)
     Like  Bookmark
  • 找出最小的完全平方數 解題思路 以下想法有其中兩種是可行的,一種會超時(TLE),猜猜看是哪一個! ==想法一== 使用for迴圈,從 $k$ 位數的第一個數,檢查到 $k$ 位數的最後一個數。 每檢查到一個數,就看看他是否符合「各位數字皆為偶數」且「為完全平方數」。若同時滿足兩個條件,即為所求。 ==想法二== 設 $m$ 為起始數字,由 $m = 2$ 開始,檢查 $m^2$ 是不是 $k$ 位數,又是否符合「各位數字皆為偶數」這個條件。
     Like  Bookmark
  • 輸出入小技巧 C格式輸出入 scanf():C語言的輸入指令。 printf():C語言的輸出指令。 e.g. 輸入一日期、輸出同一日期。輸出入日期格式:YYYY/MM/DD C++ 寫法 #include <iostream>
     Like  Bookmark
  • 引言 Q. (親愛的chatGPT...)請幫我撰寫一個C++程式,輸入西元年月日,以及經過多少天,可以輸出相應的西元年月日。 A. 以下是一個C++程式,可以根據輸入的西元年月日和經過的天數,計算出相應的新的西元年月日。 :::warning 觀察主程式,使用的自訂函式,輸入、輸出分別為何? 走進這個自訂函式,它又使用了哪些自訂函式,他們的輸入、輸出分別為何? 為什麼要有這些自訂函式呢?他們分別反映出,這題在增加天數的時候,需要考量哪些可能? :::
     Like  Bookmark
  • a010 因數分解 Problem Description 各位在國小時都學過因數分解,都瞭解怎麼樣用紙筆計算出結果,現在由你來敎電腦做因數分解。 因數分解就是把一個數字,切分為數個質數的乘積,如 12 = 2^2 * 3。 其中, 次方的符號以 ^ 來表示 輸入說明 輸入共一行。每行包含一個整數,符合 大於 $1$ 且 小於等於 $1000000$ 輸出說明
     Like  Bookmark
  • 麗山:點歌小程式(全部都是程式題) 桃園:Merge sort(都是演算法那章的章節) 大園:DC與遞迴(其他則是ipv6, Big data, ML, quick sort) 西松:排序演算法(隔壁老師是排程演算法) 明倫:遞迴結構 景美:樹狀圖(含樹的概念及應用的二元搜尋樹) 景美正式:排程演算法/二分搜尋/二維陣列的概念與實作
     Like  Bookmark
  • apcs練習網解題紀錄 a132主機排程 相同題型: Q_4_19 五嶽盟主的會議場所 參考測資 範例測資太簡單了導致很多人範測過還是WA,以下測資供參。 Input 1 2 6
     Like  Bookmark
  • Problem Description 我國的身分證字號有底下這樣的規則,因此對於任意輸入的身分證字號可以有一些基本的判斷原則,請您來判斷一個身分證字號是否是正常的號碼(不代表確有此號、此人)。 (1) 英文代號以下表轉換成數字 A=10 台北市 J=18 新竹縣 S=26 高雄縣 B=11 台中市 K=19 苗栗縣 T=27 屏東縣 C=12 基隆市 L=20 台中縣 U=28 花蓮縣 D=13 台南市 M=21 南投縣 V=29 台東縣 E=14 高雄市 N=22 彰化縣 W=32 金門縣
     Like  Bookmark
  • a = [3,0,1,8,7,2,5,4,6,9] #a = [9,8,7,6,5,4,3,2,1,0] n = 10 ''' #重複n-1回合,第 j 回合將a[n-1-j]數字的定位,定位方法如下 for j in range(n-1): #重複執行 n-1-j 次,第 i 回合比較a[i]與a[i+1]大小,若反序則互換 for i in range(n-1-j): if a[i] > a[i+1]: a[i], a[i+1] = a[i+1], a[i]
     Like  Bookmark
  • 1. 購買力 題目敘述 //#include <bits/stdc++.h> #include <iostream> #include <math.h> using namespace std; int main(){ int n, d, a[3]; cin >> n >> d; int cnt = 0, sum = 0;
     Like  Bookmark
  • 3月 1. 時區(Zone) 題目分析 時間系統跟現實的異同 時、分、秒數量關係不變。換句話說,$1$ hr = $60$ mins,$1$ mins = $60$ secs 一天還是$24$個時區 一個時區變成$1.5$小時,因此一天有$36$小時,也就是$36 \times 60= 2160$ 分鐘
     Like  Bookmark
  • 合併排序 記不記得之前談到快速排序法(Quick Sort)可以加快排序 但是切半要怎麼切才可以 版本1 空間複雜度$O(n \log(n))$(因為陣列開固定大小,所以實作為$O(n^2)$ //naive merge sort(for small case) #include <iostream> #define INF 100000009;
     Like  Bookmark
  • 0/1 knapsack Judy的份扣: #include <iostream> #include <math.h> using namespace std; #define N 100 /*// 沒有dp, 直接遞迴算 int bp(int n, int i, int v, int w[], int c[]){
     Like  Bookmark