1140. Look-and-say Sequence

Source: Internet
Author: User
Look-and-say Sequence

Look-and-say sequence is a sequence of integers as the following:

D, D1, D111, D113, D11231, D112213111, ...
where D is in [0, 9] except 1. The (n+1) St number is a kind of description of the nth number. For example, the 2nd number means this there is one D in the 1st number, and hence it is D1; The 2nd number consists of one D (corresponding to D1) and one 1 (corresponding to one), therefore the 3rd number is D111; or since the 4th number is D113, it consists of one D, and both 1 ' s, and one 3, so the next number must be D11231. This definition works for D = 1 as well. Now is supposed to calculate the Nth number in a look-and-say sequence of a given digit D.

Input Specification:

Each input file contains one test case, which gives D (in [0, 9]) and a positive an integer N (<=40), separated by a space .

Output Specification:

Print in a line the Nth number in a look-and-say sequence of D.

Sample Input:

1 8

Sample Output:

1123123111

Test Instructions

Given an initial number d and a target sequence number n, the nth sequence of outputs is required.

The generation rule for a sequence is that the latter sequence is a description of the number of consecutive digits in the previous sequence. Take d = 1 as an example: sequence ①:1, that is, d itself, sequence ②:11, indicating that there is a 1 in ①, sequence ③:12, indicating that there are 2 1 in ②, sequence ④:1121, indicating ③ 1 1, a 2, sequence ⑤:122111, indicating ④ 2 1, a 2, a 1;

Ideas

Just follow the test instructions to simulate, see the code.

Code Implementation

 #include <iostream> #include <string> #include <vector> using namespace std

;          void Nextstring (String &s)//generates the next sequence {vector<char> temp;         Stores the current sequence of each number and its number int x = s[0]-' 0 ';                Current number int cnt = 0;
        The current number number for (int i = 0; i < s.length (); i++) {if (S[i]-' 0 ' = = x) cnt++;
            else//old digit continuous sequence end {temp.push_back (x);
            Temp.push_back (CNT);     x = s[i]-' 0 ';
        Update Current number CNT = 1;      }} temp.push_back (x);

    The last number of the current sequence and its number are deposited into the temp temp.push_back (CNT);      S.clear ();
Empties the current sequence for (int i = 0; i < temp.size (); i++) s + = Temp[i] + ' 0 ';
    } int Main () {string D;

    int n;

    Cin >> d >> N;

    for (int i = 0; i < n-1; i++)//Only n-1 times nextstring (d) is executed;

    cout << D;
return 0; }

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.