1 条题解

  • 0
    @ 2025-8-24 22:37:13

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 力巴尔
    **

    搬运于2025-08-24 22:37:13,当前版本为作者最后更新于2022-03-22 11:52:35,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目传送门

    这道题显然是让我们找规律。

    不妨先模拟一下:

    kk 屏幕的输出 A\texttt A 的个数 B\texttt B 的个数
    1 B 0 1
    2 BA 1
    3 BAB 2
    4 BABBA 2 3
    5 BABBABAB 3 5
    6 BABBABABBABBA 5 8

    不难看出,每个字母的个数是呈斐波那契数列上升的。

    下面给出本蒟蒻的证明过程:

    首先设当 k=ik = iA\texttt A 的个数为 aia_iB\texttt B 的个数为 bib_i

    根据题目“每当他按一次按钮,屏幕上的字母 B\texttt B 变为 BA\texttt{BA},而字母 A\texttt A 变为 B\texttt{B}”可知:ai=bi1a_i = b_{i - 1},$b_i = b_{i - 1} + a_{i - 1} = b_{i - 1} + b_{i - 2}$,则 $a_i = b_{i - 2} + b_{i - 3} = a_{i - 1} + a_{i - 2}$,即可得到上述结论。

    所以 ai=fibi1a_i = fib_{i - 1}bi=fibib_i = fib_{i}

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int k, a[50];
        cin>>k;
        a[0] = 0;
        a[1] = 1;
        a[2] = 1;
        for (int i = 3;i <= k;i++)
            a[i] = a[i - 1] + a[i - 2];
        cout<<a[k - 1]<<" "<<a[k];
    }
    

    都看到这了,点个赞再走?

    • 1

    信息

    ID
    7536
    时间
    1000ms
    内存
    32MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者