題目連結
https://zerojudge.tw/ShowProblem?problemid=a015
解題思路
先使用scanf()函式讀取輸入的二維陣列後,將其行列互換再輸出。
從三年前第一次接觸程式,開始撰寫程式解題報告;到兩年前全心投入程式解題報告的編寫,並將內容公開上網;再到去年架設網站,並在今年將內容系統性的統整並上傳。三年來,不僅僅是技術的成長,也是心態上的突破。
一開始之所以會撰寫程式解題報告,是因為自己在學習程式的過程中遭遇的種種挫折。當時高三的我,在沒有任何基礎的情況下,僅憑著對程式的熱忱,毅然投入了進階程式設計課程。直到我開始在網路上尋找學習資源後,才發現坊間的素材雖多,卻多是以「幾天內學會」為目標的文章,因為過於壓縮內容,反而很難讓初學者理解。同時因為各個作者安排的進度不同,讀者不易從中途切入,往往需從頭看完整個系列教學,卻未必能得到想要的答案,也難以銜接其他參考資料。
因此,我把目光轉向實作導向的解題報告。解題報告既沒有順序性,也沒有進度安排,讀者可以依自己的步調決定學習的節奏,直面自己的問題並加以改善。可惜的是,當時的解題報告多以語法較簡潔Python為主,較少針對C語系。因此,在程式能力漸趨成熟後,我開始著手撰寫一份以初學者角度剖析題意,釐清解題思路,並轉化為程式碼的解題報告。或許我的程式能力並不是最強的,但正因為我曾有著這樣的經歷,更能理解初學者的想法,以及容易犯錯的地方。
過往我撰文時用的編輯器是HackMD,但隨著內容逐漸增加,我開始意識到系統性整理文章的的重要性,同時也希望拓展寫作的方向。因此才有了 Codebar 程式酒吧 的出現。未來 Codebar 程式酒吧 將會以提供各道程式題目的解題報告,以及一些活動的申請經歷與參與經驗為方向。希望藉由自己的力量,能幫助更多有相同經歷與需求的人。
感謝 方珮雯 老師,幫助我建立程式概念,完成人生第一份程式解題報告。
感謝 M_SQRT 大,協助我程式解報告的改進,給了我繼續努力的動力。
感謝 不輕易滿足、不輕言放棄的 頑固的自己,兩年走來仍在路上
https://zerojudge.tw/ShowProblem?problemid=a013
本題希望我們寫出可以進行羅馬數字減法的程式。而由於電腦無法直接進行羅馬數字的運算,因此我們須先將輸入的兩組羅馬數字轉為阿拉伯數字,然後再進行運算,最後將運算後的結果再轉回羅馬數字輸出。
https://zerojudge.tw/ShowProblem?problemid=a010
這題的關鍵是「因數分解」這四個字,背後所代表的計算過程。當我們在做因數分解的時候,會使用短除法,從最小的質數開始檢查。當遇到該數的因數時,就把該數除以此質數得到商數,然後再重複上述動作,直到確定商數已經不能再被此質數整除為止。重複上述動作直到商數剩下一為止,即完成因數分解。
https://zerojudge.tw/ShowProblem?problemid=a009
ASCII碼全名為「American Standard Code for Information Interchange」,中文為「美國信息交換標準代碼」。之所以會有這個代碼是因為電腦採用的是二進制,八進制、十進制的其他數字,或甚至英文字母,必須經由此代碼轉換為二進制後,電腦才能順利理解、顯示、運算。
以C語言來說,當電腦進行字元與整數的運算時,會自動將該字元轉為ASCII碼再與整數運算,運算完成後再轉成字元。因此,所謂「把明碼的每個字元加上某一個整數K而得到密碼的字元」,指的是將明碼所對應到的ASCII碼加上某一個整數K,再轉為字串得到密碼。
透過觀察範例輸入/出可知,1經過轉換後會變成*,查表可得K值為-7。因此,我們先使用scanf()函式讀取輸入的明碼,存放到字元陣列arr,再將陣列內的元素逐一減七,就是題目所求的密碼了。