# 106/03/04 APCS考古題觀念題練習1~7題
1. 輸入16會找到超出A陣列
2. F函式的用處是打出某個數量的*持續等同此數可以除以2的數量
比如輸入4
會先有****
再來在執行2次的F(4/2)
分別在打出兩次**
再來會在執行四次F(2/1),四次的*
總共12個*
**如果是基數會有特殊的情形**
比如輸入5
會先有*****
再來只會執行F(2)兩次,也就跟上個的後半部一樣
但第一次是五個*,所以F(5)比F(4)多一個*
**n在題目中是整數**
(A)
A1:F(1), F(4)是1+12=13個*
A2:F(2), F(3)是4+5=9個
(B)
A1:F(2), F(10)是4+36=40, F(10)是10加兩個F(5)
A2:F(5), F(7)是13+17=30, F(7)是7加兩個F(3)
(C\)
A1:F(2), F(11)是4+37=41, F(11)是11加兩個F(5)
A2:F(5), F(8)是13+32=45, F(8)是8加上兩個F(4)
(D)
A1:F(3), F(12)是5+44=49, F(12)是12加上兩個F(6),F(6)是6加上兩個F(3)
A2:F(6), F(9)是16+33=49
3. 這題一樣可以暴力解,跟上一題差不多
(A)
F(14)=14*F(13)=14*13*F(12)一定>40(越乘越大)
(B)
F(14)=14+F(11)=14+11+F(8)=14+11+8+F(5)=14+11+8+5+F(2)=14+11+8+5+2=40
(C\)
F(14)=14-F(12)一定<40(越減越小)
(D)
F(14)=F(42+1)無解,永遠不會<4並輸出
4. 理論
r==0代表a整除b
最大公因數是a, b可以整除的最大數字(15和6的最大公因數是3)
如果a剛好可以被b整除,勢必b就是最大公因數,所以第一格是b
再來需要一個演算法叫做**輾轉相除法**
簡單來說:大數/小數=整數...餘數,再把小數/餘數=整數...餘數2,然後再把剛剛的被除數「餘數」除剛剛的「餘數2」,以此類推
總之,上一個的除數要變成下一個的被除數
所以第二格是GCD(b, r)
5. p會被陣列最大值取代,q會被陣列最小值取代,但若沒有大於或小於的值p=q=A[0]
6. 這個程式的問題是rowsume沒有歸0,所以第一個值會是對的,之後的就不一定了,程式執行上沒有問題
7. 我們用一表示一次\
B(5, 2)
=B(4, 1)+B(4, 2)
=B(3, 0)+B(3, 1)+B(3, 1)+B(3, 2)
=三+B(2, 0)+B(3, 0)+B(2, 0)+B(3, 0)