2018年全国多校算法寒假训练营练习比赛(第一场) - J - 闯关的lulu(找规律,递归)

链接:https://www.nowcoder.net/acm/contest/67/J
来源:牛客网

题目描述 
    勇者lulu某天进入了一个高度10,000,000层的闯关塔,在塔里每到一层楼,他都会获得对应数量的0 1(看情况获得),然后塔里有一个法则,当你身上某个数字达到一个特定的数量时,它们会合成为下一个数字,现在问题来了,当lulu从1层到达第n层的时候,他身上的数字是多少。
第1层 0
第2层 11
第3层 110
第4层 21
第5层 210
第6层 22
第7层 220
第8层 2211
第9层 22110
第10层 2221
第11层 22210
第12层 3
输入描述:
第一行是样例数T(T<100)
第2到2+T-1行每行有一个整数n(0


题目给出了3的得到,就是每12层 1 个 3 

要猜的就是多少个3可以得到一个4

规律就是:当k>=3时 ,要得到 k+1 需要 k+2 个 k 

#include 
#include 
#include 
using namespace std;
int T,n;
char s[15][10]={"","0","11","110","21","210","22","220","2211","22110","2221","22210",""};
void slove(int k,int cnt){
    if(k==0) return;
    int base = cnt + 2;
    slove(k/base, cnt + 1);
    for(int i=1;i<=k%base;i++) printf("%d",cnt);
}
int main()
{
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        slove(n/12, 3);
        printf("%s\n",s[n%12]);
    }
    return 0;
}




你可能感兴趣的:(找规律,递归)