P8241 [COCI2013-2014#3] RIJEČI題解
阿新 • • 發佈:2022-03-21
原題Link
看到這個題,我第一想法就是直接開始找規律,於是,通過列舉,列出來瞭如下的:
(上面的是每按 \(1\) 次,會變換成的樣子,下面的是統計的 \(A\) 和 \(B\) 的個數)
不難發現,從第 \(2\) 次變換開始每一次,\(A\) 的個數會變換成上一組 \(B\) 的個數,而 \(B\) 的個數,會變換成上一組個數總和
那麼,如何證明上述的規律是正確的?
首先,明確一點,題目中所講:
每當他按一次按鈕,螢幕上的字母 B 變為 AB,而字母 A 變為 B。
因此,可以推斷出來的是:
-
\(B\) 的個數就是上一組個數總和(因為上面的一組不管是 \(A\) 還是 \(B\)
-
而 \(A\) 只可以由上一組的 \(B\) 變換出來,因此,\(A\) 的個數就是上一組 \(B\) 的個數
因此,可以直接得到程式碼:
#include <iostream> using namespace std; int main() { int n; cin >> n; int a = 1, b = 0; for (int i = 1; i <= n; i++) { int na = a, nb = b; a = b; b = na + nb; } cout << a << " " << b << endl; return 0; }
唯一需要注意的一點就是一定是從第 \(1\) 次開始迴圈的,不要寫成第 \(2\) 次了
就這樣,拜拜