【模拟】【字符串】数列

    xiaoxiao2023-10-23  161

    题目:

    小S今天给你出了一道找规律题,题目如下: 有如下的数列1,11,21,1211,111221,312211,…… 小S问你这个数列的第N项是多少,而你一头雾水根本找不出规律。 聪明的小R悄悄地告诉你是这样的 1, 上一个数是一个1,写作11 上一个数是两个1,写作21 上一个数是一个2,一个1,写作1211 上一个数是一个1,一个2,两个1,写作111221, ………… 相信聪明的你一定可以解决这个问题。


    输入:

    第一行包括一个正整数N。


    输出:

    一行一个正整数(注意数字可能会唱过长整形,请注意用数组或者字符串存储)


    样例输入:

    6

    样例输出:

    312211

    思路:

    按着题目打下去就好了。


    一个神奇的秘密:

    把1,11,21,1211,111221,312211套进这个东东里,就可以打表了。



    50分打表 c o d e code code:

    #include<cstdio> #include<iostream> using namespace std; int n; int main() { scanf("%d",&n); if(n==1)printf("1"); else if(n==2)printf("11"); else if(n==3)printf("21"); else if(n==4)printf("1211"); else if(n==5)printf("111221"); else if(n==6)printf("312211"); else if(n==7)printf("13112221"); else if(n==8)printf("1113213211"); else if(n==9)printf("31131211131221"); else if(n==10)printf("13211311123113112211"); else if(n==11)printf("11131221133112132113212221"); else if(n==12)printf("3113112221232112111312211312113211"); else if(n==13)printf("1321132132111213122112311311222113111221131221"); else if(n==14)printf("11131221131211131231121113112221121321132132211331222113112211"); }

    C o d e Code Code

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,t; char c; string str[40];//(注意数字可能会唱过长整形,请注意用数组或者字符串存储) int main() { scanf("%d",&n); str[1]="1"; //str[i]记录i的数 for(int i=2;i<=n;i++) { t=1; //初始化 c=str[i-1][0];//等于上一个字符 for(int j=1;j<str[i-1].size();j++)//枚举字符串的长度 { if(str[i-1][j]!=c)//不匹配 { str[i]+=t+48;//转换 str[i]+=c; //更新 t=1; c=str[i-1][j]; } else t++; //否则++ } str[i]+=t+48;//转换 str[i]+=c;//更新 } cout<<str[n]<<endl;//输出 return 0; }
    最新回复(0)