程式設計-手寫題 - 特考

Table of Contents

※ 引述《ebubble (coffee)》之銘言:
: [考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處
: 出處: 程式設計概要精修 向宏
: [92 地方特考]
: 下列程式輸出為何?
: CLS
: S = 0
: FOR K = 1 TO 10
: FOR I = 0 TO (K - 1)
: FOR J = 0 TO (K - 1)
: IF I < > J THEN S = S + 1
: NEXT J
: NEXT I
: NEXT K
: PRINT S
: END
: [解答]
: 當 K = 1 時, I 與 J 迴圈都只執行 1 次, 其中 I = J 有 1 次, S 為 0 。
: 當 K = 2 時, I 迴圈執行 2 次, J 迴圈執行 4 次, 其中 I = J 有 2 次, S 為 2。
: 當 K = 3 時, I 迴圈執行 3 次, J 迴圈執行 9 次, 其中 I = J 有 3 次,
: S 為 2 + 6 = 8。
: .
: .
: .
: 當 K = n 時, I 迴圈執行 n 次, J 迴圈執行 (n平方) 次, 其中 I = J 有 n 次,
: S 增加 (n平方 - n)
: S = n (n+1) (2n+1) / 6-n (n+1) / 2
: = 10 * 11 * 21 / 6-10 * 11 / 2
: = 385 - 55
: = 330
: ---------------------------------------

設 <> 是不等於的意思
其實觀察 K=1 2 3 就可以發現到有下列規則
當k=x s為x*(x-1)

當k為1
組合為 00
s有0組

當k為2
組合為 00 01
10 11
s有2組

當k為3
組合為 00 01 02
10 11 12
20 21 22
s有6組

觀察可知 都是斜對角不算 ( 00 11 22 33... kk)
也就是 s = k*k - k => k*(k-1)

那當k=1 to 10
s = 1*0 + 2*1 + 3*2 + 4*3 + 5*4 + 6*5 + 7*6 + 8*7 + 9*8 + 10*9
= 0 + 2 + 6 + 12 + 20 + 30 + 42 + 56 + 72 + 90
= 330

--

All Comments