2016年7月31日 星期日

【A007】最大公因數

題目:
將輸入兩個整數,請算出他們的最大公因數

說明:
我使用「輾轉相除法」
最後餘數為0或1停止
餘數0則最大公因數為商(上個餘數)
餘數為1則最大公因數為1(這兩個數互質)
例子:
gcd(6,34)
34=6*5+4
6=4*1+2
4=2*2+0→餘數遇到0或1則停止

【M90H040】複數的除法

題目:
將輸入4個整數a,b,c,d,而分別為a+bi、c+di,而我們要輸出(a+bi)/(c+di)的複數型態

說明:
此題需要結合複數的乘法。
(a+bi) / (c+di) 
=[(a+bi)(c-di)] / [(c+di)*(c-di)]→上下同乘分母的共軛複數
=(ac-bd)+i(cb-ad) / (c^2+d^2)
=(ac-bd)/(c^2+d^2) + i(cb-ad)/(c^2+d^2)

【A017】三角形種類

題目:
將輸入三個邊長,請判斷此為何種三角形
說明:
此題需要了解怎麼判斷三角形。
三角形的成立條件:a+b>c
等腰三角形:a=b
正三角形:a=b=c
直角三角形:a^2+b^2=c^2
鈍角三角形:a^2+b^2=c<2
銳角三角形:a^2+b^2=c>2

2016年7月29日 星期五

【F002】int 溢位控制

題目:
不可在程式碼中輸入2~9的數字,但要顯示2147483647和-2147483648這兩數

說明:
仔細觀察2147483648為2^32次方也就是0xff ff ff ff,而C++只能使用16進制來表達。
故2147483647=0x7f ff ff ff

2016年7月28日 星期四

【M90H010】2^X位數疊加之個位數

題目:
將輸入一個正整數X,而我們要去計算2^1+2^2+...+2^X=的結果之個位數
說明:
其實這題很簡單,找到規律就可以了。如下

例子:
X=1,SUM=2
X=2,SUM=6
X=3,SUM=4(只看個位數)
X=4,SUM=0
也就是說每4個一個循環,因此我們可以用switch解決問題

【G008】小寫轉大寫

題目:
將輸入的小寫英文轉成大寫
說明:
這題有點機車,雖然題目沒說,但實際測資就知道空白不顯示,且其餘符號要正常顯示,個人建議一個個讀取判斷再輸出,如果利用陣列的方式先儲存,有時會儲存到不可預知的符號。

【F006】char's ASCII

題目:
將輸入的字元,轉換成ASII顯示,且輸出下一個ASCII的字元。
說明:
利用int可以將char的ASCII顯示出來

【A014】平方求餘

題目:
輸入三個正整數 n p d,請運算(n^p)%d。
解法:
這題難的地方是在平方,因為出資程式會放很大的次方,因此不能使用pow計算。