發表文章

目前顯示的是 2026的文章

[CPE一星49題] UVA948 - Fibonaccimal Base 題目解析與實作

圖片
編輯製作: 蔡豐聲、莊祺仁  單位: 中國醫藥大學 醫療資訊學系 程式俱樂部  YT: https://youtu.be/ph0WJF3h0Qw ## 題目資訊 題目名稱: Fibonaccimal Base 編號: CPE10401, UVA948  相關平台: Zero Judge , Online Judge ## 題目解析 有名的費氏數列(Fibonacci sequence)是以 0 和 1 開始,然後把最後的兩個數字相加以得到下一項。例如數列的第三項為 1 ($1=1+0$),第四項為 2 ($2=1+1$),第五項為 3 ($3=2+1$),依此類推。 本題要求我們使用「費氏進位法(Fibonaccimal Base)」來表示一個正整數。齊肯多夫定理(Zeckendorf's Theorem)指出:任何正整數都可以唯一分解成若干個不連續的費氏數之和。我們用一連串的 0 與 1 來表示,其中 1 表示有用到該項費氏數,0 表示沒有用到。為了維持唯一性,不可以連續使用費氏數列中相鄰的項(例如不能同時使用 2 和 3,因為 $2+3=5$,應該直接使用 5)。 舉例來說: $17 = 13 + 3 + 1$ (對應費氏數列中的項,且沒有相鄰項) 將有使用到的項記為 1,沒用到的記為 0,由左至右排列,因此 $17 = 100101 \text{ (fib)}$。 ## 輸入說明 輸入的第一行含有一個數字 $N$,代表以下有幾個數字 ($1 \le N \le 500$)。 接下來有 $N$ 行,每行有一個小於 100000000 的正整數。 ## 輸出說明 對於每個輸入的整數,必須依據下列格式輸出一行: X = Y (fib) 其中 X 是原本的十進位數字,Y 是其費氏進位表示法。 ## 範例測試 輸入:                  10                  1                  2   ...

[CPE一星49題] UVA10019 - Funny Encryption Method 題目解析與實作

圖片
編輯製作:  蔡豐聲、莊祺仁  單位:  中國醫藥大學 醫療資訊學系 程式俱樂部  YT:  https://youtu.be/nThbxeAACRo ## 題目資訊 題目名稱:   Funny Encryption Method 編號:  CPE10403, UVA10019  相關平台:   Zero Judge ,  Online Judge ## 題目解析 本題要求對一個整數 $N$ 進行特殊的二進位轉換計算。給定一個正整數 $N$,我們需要根據兩種不同的解讀方式來計算其二進位表示法中「1」的個數。 計算 $b1$ (十進位解讀): 將 $N$ 視為一個十進位整數。 將其轉換為二進位格式。 統計二進位字串中「1」出現的次數。 計算 $b2$ (十六進位解讀): 將 $N$ 視為一個十六進位整數(即 $N_{16}$)。 將其轉換為二進位格式。 統計二進位字串中「1」出現的次數。 ## 輸入說明 第一行包含一個整數 $T$,代表測試資料的組數。 接下來的 $T$ 行,每行包含一個整數 $N$ 。 ## 輸出說明 對於每一組測資,輸出兩個整數 $b1$ 和 $b2$,中間以一個空格分隔。 ## 範例測試 輸入:                  3                  265                  111                  1234 輸出:                  3 5                  3 3     ...

[CPE一星49題] UVA272 - TEX Quotes 題目解析與實作

圖片
編輯製作:  蔡豐聲、莊祺仁  單位:  中國醫藥大學 醫療資訊學系 程式俱樂部  YT:  https://youtu.be/aYX7ogK9JVk ## 題目資訊 題目名稱:   TEX Quotes 編號:  CPE22131, UVA272 相關平台:   Zero Judge ,  Online Judge ## 題目解析 在普通的打字機文件中,雙引號通常是用一個符號 "   來表示 。但在 $\text{TeX}$ 排版系統中,雙引號有方向之分: 左雙引號: 使用兩個反引號 ` ` 表示 。 右雙引號: 使用兩個單引號 ' ' 表示 。 本題要求將輸入文本中成對出現的雙引號 ",依序替換為 $\text{TeX}$ 格式的左引號與右引號。 ## 輸入說明 輸入包含多行文字,其中包含若干雙引號 " 。 程式需處理直到檔案結束 (EOF) 。 ## 輸出說明 將輸入中的第 1、3、5... 個 " 轉換為 ` ` 。 將輸入中的第 2、4、6... 個 " 轉換為 ' ' 。 其餘字元保持不變輸出 。 ## 範例測試 輸入:                  "To be or not to be," quoth the Bard, "that is the question." 輸出:                  ` `To be or not to be,' ' quoth the Bard, ` `that is the question.' ' ## 解題思路 狀態記錄: 需要一個布林變數(例如 is_first)來記錄當前的引號是「左引號」還是「右引號」。 初始值設為 True(代表下一個遇到的 " 是左引號)。 逐字處理: 遍歷輸入字串中的每一個字元。 如果字元不是 ",直接原樣輸出。 如果字元是 ":若 is_first 為真,輸出 ` ` 並將 is_first 改為 False 。若 is_first 為假,輸出 ' ' 並將 is_first 改為 ...

[CPE一星49題] UVA11461 - Square Numbers 題目解析與實作

圖片
編輯製作:  蔡豐聲、李心潔 單位:  中國醫藥大學 醫療資訊學系 程式俱樂部   YT:   https://youtu.be/EzazVuX383g ## 題目資訊 題目名稱:  Square Numbers 編號:  CPE10480, UVA11461 相關平台:   Zero Judge ,  Online Judge ## 題目解析 完全平方數(Square Numbers)是指可以寫成某個整數平方的數,例如 $1, 4, 9, 16, 25 \dots$ 等。本題要求給定一個範圍 $[a, b]$,計算在此區間內共有多少個完全平方數。 ## 輸入說明 每組測試資料包含兩個整數 $a$ 和 $b$ ($0 < a \le b \le 100000$)。 當輸入為 0 0 時,代表測試結束 。 ## 輸出說明 對於每組測試資料,輸出一個整數,代表在 $a$ 到 $b$ 之間(包含 $a, b$)完全平方數的個數。 ##  範例測試 輸入:                      1 4                       1 10                        0 0   輸出:                                       2                  ...

[CPE一星49題] 綜整起手式 - 三種常用輸入處理模式大解析

圖片
編輯製作:  蔡豐聲  單位:  中國醫藥大學 醫療資訊學系 程式俱樂部  YT:  https://youtu.be/Ic9qwmjMS1g ## Python 解題心法:三種常用輸入處理模式大解析 在進行程式解題時,正確且高效地讀取輸入(Input)是成功的第一步。根據題目需求與資料量的大小,Python 提供了多種靈活的處理方式。本文將針對四種常見的輸入格式,整理出三種主要的實作思路(while True + input、sys.stdin、sys.stdin.readlines)。 ##  輸入說明 在開始程式碼之前,我們先確立四種常見的輸入情境: 情境1 (單一數值):  每行一個數字,直到 EOF(檔案結束)。                 112233                   308                 2937 情境2 ( 結束標誌):  每行一個數字,遇到  0  時停止。                 2                   11                 47                 1234567892                 0 情境3 ( 固定多值) :  每行固定兩個數字(如  i ,  j ),空格隔開。   ...

[CPE一星49題] UVA10929 - You can say 11 題目解析與實作

圖片
編輯製作:  蔡豐聲、李心潔 單位:  中國醫藥大學 醫療資訊學系 程式俱樂部   YT:   https://youtu.be/zkRkgCWFxL0 ## 題目資訊 題目名稱:  You can say 11 編號:  CPE10460, UVA10929 相關平台:   Zero Judge ,  Online Judge ## 題目解析 本題要求判斷一個給定的長整數是否為 11 的倍數 。由於輸入的數字可能非常大(長度可達 1000 位數),直接使用整數型態進行除法運算可能會導致溢位。 ## 輸入說明 包含多組測試資料,每組資料為一個正整數(最高可達 1000 位數)。 當輸入為 0 時,代表程式結束 。 ## 輸出說明 若該數是 11 的倍數,輸出: [數字] is a multiple of 11.   若該數不是 11 的倍數,輸出: [數字] is not a multiple of 11. ##  範例測試 輸入:                                      112233                       308                        2937   輸出:                                       112233 is a multiple of 11....