zoukankan      html  css  js  c++  java
  • 牛客多校第十场 B Coffee Chicken 递归

    题意:

    给你一个“斐波那契”字符串数列,第n项由第n-1项和第n-2项拼接而成,输出某项的某位及其后10位。

    题解:

    递归求解即可。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long uLL;
    typedef long long ll;
    typedef pair<int, LL>P;
    const int M = 1e2 + 5;
    const int N = 1e5 + 5;
    const LL mod = 1e9 + 7;
    const LL lINF = 0x3f3f3f3f3f3f3f3f;
    #define ls (rt<<1)
    #define rs (rt<<1|1)
    LL cnt[M],n,k;
    string s1 = "COFFEE";
    string s2 = "CHICKEN";
    char ss[N];
    int tot;
    void solve(LL n,LL k)
    {
        if (n > 2 && k > cnt[n - 2])
            solve(n - 1, k - cnt[n - 2]);
        else if (n > 2)
        {
            solve(n - 2, k);
            if (k + 9 - cnt[n - 2] >= 0)
                solve(n - 1, 1);
        }
        if (n == 1)
        {
            if (tot > 20)
                return;
            for (int i = k - 1; i < s1.size(); i++)
            {
                ss[tot++] = s1[i];
            }
        }
        else if (n == 2)
        {
            if (tot > 20)
                return;
            for (int i = k - 1; i < s2.size(); i++)
            {
                ss[tot++] = s2[i];
            }
        }
    }
    int main()
    {
        cnt[1] = 6;
        cnt[2] = 7;
        for (int i = 3; i < 57; i++)
        {
            cnt[i] = cnt[i - 1] + cnt[i - 2];
            //cout << cnt[i] << endl;
        }
        int _;
        scanf("%d", &_);
        while(_--)
        {
            scanf("%lld%lld", &n, &k);
            if (n > 56)
                n = 56;
            tot = 0;
            solve(n, k);
            for (int i = 0; i < min(tot, 10); i++)
            {
                printf("%c", ss[i]);
            }
            puts("");
        }
    }
  • 相关阅读:
    正则表达式、常用的匹配总结
    已知IP地址,如何计算其子网掩码,默认网关地址,网络地址等。
    暑假作业日总结
    暑假作业日总结
    暑假作业日总结
    暑假作业日总结
    暑假作业日总结
    暑假作业日总结
    暑假作业日总结
    暑假作业日总结
  • 原文地址:https://www.cnblogs.com/isakovsky/p/11372456.html
Copyright © 2011-2022 走看看