題目連結
https://zerojudge.tw/ShowProblem?problemid=a044
解題思路
這題的程式寫法並不難,關鍵在於空間中的n個平面最多可將空間切成幾個區域。已知n個平面最多可以將空間分割成(n3+5n+6)/6個區域,因此先讀取輸入的n值,再輸出(n3+5n+6)/6的值。
https://zerojudge.tw/ShowProblem?problemid=a044
這題的程式寫法並不難,關鍵在於空間中的n個平面最多可將空間切成幾個區域。已知n個平面最多可以將空間分割成(n3+5n+6)/6個區域,因此先讀取輸入的n值,再輸出(n3+5n+6)/6的值。
https://zerojudge.tw/ShowProblem?problemid=a042
這題的程式寫法並不難,關鍵在於找到平面上的n個圓最多可以把平面分割成幾區域。已知n個圓最多可以把平面分割成n2-n+2個區域,因此先讀取輸入的n值,再輸出n2-n+2的值。
https://zerojudge.tw/ShowProblem?problemid=a040
由題目可知阿姆斯壯數的判斷方法為將待判斷的數字依照位數分拆成各個數字後,依照待判斷數字的位數n次方後,再判斷各位數的次方和是否等於待判斷的數字。故本題的兩個關鍵分別是判斷輸入數字的位數,以及取各個位數的n次方。
https://zerojudge.tw/ShowProblem?problemid=a034
在進入本題的討論之前,我們需要先了解何謂進位制。所謂的進位制,指的是以「基數」的指數和表示數字的記數方法。以最常見的十進位制來說,基數就是10。因此,以123這個數字來說,在十進位制下即為 1 x 102 + 2 x 101 + 3 x 100 。而所謂的二進位制,就是基數為2的進位制。除了基數不同以外,邏輯和十進位制其實相同。因此,在進行從十進位制到二進位制的轉換時,我們可以2的指數逐一降次檢查大小。
因為整數型態的變數可儲存的最大值為231,所以我們先從231開始檢查,若該數比231還大,就將該位數註記為1,並將其值減去231,否則將該位數註記為0。接著降次繼續檢查,直到整個數字檢查完畢,即完成二進位制的轉換。舉例來說,十進位制的123可以被表示為 1 x 26 + 1 x 25 + 1 x 24 + 1 x 23 + 0 x 22 + 1 x 21 + 1 x 20 ,因此其在二進位制表示法即為1111011。