2016年8月5日 星期五

【F025】平方和

題目
輸入一個正整數,請算出1^2+2^2...+n^2

說明
由於這個正整數會出很大,因此型態必須使用double。不過double變大時,輸出會顯示科學記號,因此我們需要控制一下輸出格式。

【A045】大樂透包牌

題目
題目將輸入8個數字,我們必須要把C(8,6)組合找出來

說明
如果這題沒有限制輸出格式會很簡單,但這題就是有限制輸出格式才會增加難度。
首先我們要先觀察規則,將輸入數字由小到大
IN7, IN6, IN5, IN4, IN3, IN2, IN1, IN0
Min                                             Max

2016年8月1日 星期一

【A013】年月日計算天數

題目:
將分別輸入年分月份日期,請計算出此為第幾天
說明:
這題真有難度
需要熟悉
閏年計算(if設計),可被4整除,但是被100整不算,可是被400整除又可以。
大小月天數(switch),大月31天,小月30天。

【A012】數字轉換成標準式

題目:
將輸入一正整數,請將其轉乘標準式。

說明:
標準式,就是將一個數拆成質因數相乘。
這題我覺得相當有難度
第一個,要會判斷質數(這我寫在副程式)
第二個,迴圈的應用靈活度
第三個,'*'號的放置方法

【A009】質數判斷

題目:
將輸入一數,請判斷它是否為質數

說明:
由於質數沒有直接的公式去判斷,因此我們只能透過迴圈慢慢去取餘數,如果為0表示不是質數。但由2~N的迴圈數量太大,因此我們採用一個方法「試除法」,從2~pow(N,0.5)去測試就可以了。

【A008】九九乘法表

題目:
請列出九九乘法表,表示方法請與示範輸出相同

說明:
這題迴圈的設計還可以,不過問題在輸出的格式
未到達兩位數的數字,要補上空白
因此我們需要用到#include<iomanip>的setw()函式

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計算。