2019牛客多校10(NJU)



B:
分析: 这么简单递归居然想半天没有想到。。有一些细节问题容易wa
code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll f[505];
char s1[50]="QCOFFEE",s2[50]="QCHICKEN";
ll min(ll a,ll b){return a<b?a:b;}
ll max(ll a,ll b){return a>b?a:b;}
void solve(int now,ll k)
{
	if(now==1) printf("%c",s1[k]);
	else if(now==2) printf("%c",s2[k]);
	else {
		if(k>f[now-2]) solve(now-1,k-f[now-2]);
		else solve(now-2,k);
	}
}
int main()
{
	int t;
	scanf("%d",&t);
	f[1]=6,f[2]=7;
	for(int i=3;i<=500;i++) f[i]=min(f[i-1]+f[i-2],1e14); 
	while(t--)
	{
		int n; ll k;
		scanf("%d%lld",&n,&k); 
		for(ll i=k;i<min(f[n]+1,k+10);i++) solve(n,i);	
		printf("\n");
	}
	return 0;
}


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务