Coffee Chicken

Posted liulex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Coffee Chicken相关的知识,希望对你有一定的参考价值。

Coffee Chicken

字符串斐波那契

输出第s[n]个字符串的第k位及后十位

暴力算出前20项,超过20,跑dfs

#include<bits/stdc++.h>
 
using namespace std;
string s[1000];
typedef long long ll;
ll n,k;
ll A[500];
string _s[100];
void dfs(ll k,int x,int len)///k开始位置,x这一段是由哪个字符串拼接成的,k后取len位

    if(x<=20)
    
        for(int i=k-1; i<min(A[x],k+len-1); i++)
        
            cout<<s[x][i];
        
        return;
    
    if(k>A[x-2])
    
        k-=A[x-2];
        dfs(k,x-1,len);
    
    else if(k+len<A[x-2])
    
        dfs(k,x-2,len);
    
    else
    
        dfs(k,x-2,A[x-2]-k+1);
        dfs(A[x-2]+1,x-1,len-A[x-2]+k-1);
 
    

int main()

    s[1]="COFFEE";
    s[2]="CHICKEN";
 
    A[1]=s[1].length();
    A[2]=s[2].length();
    for(int i=3; i<=20; i++)
    
        s[i]=s[i-2]+s[i-1];
        A[i]=A[i-2]+A[i-1];
    
    int t;
    scanf("%d",&t);
 
    for(int i=21; i<=57; i++)
    
        A[i]=A[i-1]+A[i-2];
    
    while(t--)
    
        scanf("%lld%lld",&n,&k);
 
        if(n<=20)
        
            for(int i=k-1; i<min(k+9,A[n]); i++)
            
                cout<<s[n][i];
            
            cout<<\n;
        
       else  if(n<=57)
        
            dfs(k,n,10);
            cout<<\n;
        
        else if(n>57)
        
            if((n&1))
            
                dfs(k,57,10);
                cout<<\n;
            
            else
            
                dfs(k,56,10);
                cout<<\n;
            
 
        
    
 

 

以上是关于Coffee Chicken的主要内容,如果未能解决你的问题,请参考以下文章

文件方式实现完整的英文词频统计实例

通过require in循环调用多个描述

Linux VM/nodejs 问题:Nodemon、Coffee 等未执行

如何使用 Coffee-Bytes 代码折叠

配置 Ruby on Rails 以生成 .js 而不是 js.coffee [重复]

Ant 使用 exec 目标编译 Coffee Scripts