fbpx

Problema #1965 – Sir8 – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Dându-se numărul natural n, să se afle al n-lea termen al şirului 1, 11, 21, 1211, 111221, 312211, 13112221,...

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Programul va afișa al n-lea termen al șirului.

Restricții și precizări

  • 1 ≤ n ≤ 30

Exemplu

Intrare

4

Ieșire

1211

Explicație

Al 4-lea termen al sirului este 1211.

#include <bits/stdc++.h>
using namespace std;
int a[10001] , b[10001] , lung = 1 , n , t , cnt;
int main()
{
    a[0] = 1;
    cin >> n;
    for(int i = 1; i < n; i++)
    {
        cnt = 0 , t = 0;
        for(int j = 0; j < lung; j++)
        {
            if(cnt == 0) cnt++;
            else if(a[j] == a[j - 1]) cnt++;
            else
            {
                b[t++] = cnt;
                b[t++] = a[j - 1];
                cnt = 1;
            }
        }
        if(cnt)
        {
            b[t++] = cnt;
            b[t++] = a[lung - 1];
        }
        swap(a , b);
        lung = t;
    }

    for(int i = 0; i < lung; i++) cout << a[i];
}
Comentarii

S-ar putea sa iti placa