Codebar 程式酒吧

一座輕鬆學習程式的酒吧

0%

題目連結

https://zerojudge.tw/ShowProblem?problemid=a224

建議類題

a022. 迴文

解題思路

本題乍看之下就是單純判斷輸入字串是否為迴文,但須注意本題對迴文的定義是「只要重新安排順序後,符合迴文條件就算迴文」,也就是說字串的在輸入時的排列順序未必與可以形成迴文的順序相同。因此我們不能用當時a022. 迴文的想法,直接頭尾一組檢查字元是否相同,必須換種作法才行。

閱讀全文 »

題目連結

https://zerojudge.tw/ShowProblem?problemid=a216

解題思路

這題最直觀的方式是使用迴圈求出f、g值,但有鑑於本題的測資較大,為了避免出現TLE的情況,建議直接找出f(n)、g(n)的關係式以節省運算時間。如果一時之間看不出f(n)、g(n)關係式的話,可以多寫幾項觀察他們的規律。我們會發現f(n)就是連續正整數和,公式為 (n*(n+1))/2;g(n)則可以用數學上的遞迴關係式求得,公式為n*(n+1)*(n+2)/6。

注意事項

本題測資較大,部分測資的g(n)會超過int型態變數所能儲存的最大數值,因此需使用long long型態變數,寫法是%lld。

閱讀全文 »

題目連結

https://zerojudge.tw/ShowProblem?problemid=a215

解題思路

題目希望我們找出從n開始,要往下加多少數字總和才會超過m。我們可以利用迴圈重複執行的特性,從n開始將跑過的數字逐一加總,直到總和大於m為止,迴圈的執行次數即為需要的數字數量。

注意事項

相信很多程式教材在討論for迴圈和whle迴圈這兩種常見迴圈的差別時,都會提到for迴圈的特色是可以重複運行指定次數,因此許多程式初學者會誤以為for迴圈在使用時必須指定其運行次數,但其實並非如此。for迴圈和while迴圈真正的差異在於for迴圈有一個變數叫做「迴圈變數」,他的變數值會隨著迴圈運行次數的增加而改變,進而控制for迴圈在特定條件下結束運行,因此才會衍伸出指定運行次數這樣的用法,但我們也可以將其終止條件寫成不同的形式來做更多變化。以本程式碼來說,我們for迴圈的執行條件是sum<=m,也就是說一旦sum的值大於m,for迴圈就會結束執行。

閱讀全文 »

題目連結

https://zerojudge.tw/ShowProblem?problemid=a149

解題思路

本題希望我們求得輸入整數的各個位數乘積。因此,我們可以將問題分成兩個部分:將輸入數字的各個位數分開,以及把它們乘起來。

首先,為了將輸入數字各個位數分開存放,我們可以使用字串讀取輸入,將各個位數視作獨立的字元存放在字元陣列中。可能會有人好奇,為什麼我們不使用整數陣列存放各個位數呢?這是因為整數陣列讀取時會以空白作為各項的分界,各數字間必須要有空格才會被判定為不同項,而字元陣列則是自動將各個字元單獨存進陣列中。舉例來說,若是輸入的數字為356,因為3、5和6之間沒有以空白隔開,使用整數型態陣列讀取的話只會讀到356一個數字;而字元陣列是將356視為長度為3的字串,因此會將3、5、6分別以字元型態分開存放。

再來,在運算時我們必須將其從字元型態轉回整數型態。至於如何轉換,可以參考我們之前在a009. 解碼器所說的,使用ASCII碼。透過查表可知,0的ASCII碼為48,因此阿拉伯數字的真實值即為其ASCII碼減去48。

閱讀全文 »

2022全球青年趨勢論壇
全球青年趨勢論壇是由教育部青年發展署舉辦的活動,每年都會邀請國內外18–35歲的青年與國際青年組織代表參與,透過專題座談及分組討論等方式交流年度國際趨勢議題,以拓展全球化趨勢下的青年國際事務合作。參與全球青年趨勢論壇的方式可分為「青年接待大使」和「與會青年」兩種,兩者皆需事前報名,報名各自獨立。本篇我們就來聊聊關於青年接待大使書審資料的準備!

官方網站: https://iyouth.youthhub.tw/gytf/

FB粉絲專頁: https://www.facebook.com/globalyouthtrendsforum/

閱讀全文 »