# PBinfo #951 – cifre7 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Se generează un şir de cifre ai cărui primi termeni sunt, în această ordine: 
1, 1, 2, 4, 7, 3, 4, 4, 1, 9, 4, 4, 7, 5, 6, 8,...

Cerința
Deduceţi regula după care sunt generaţi termenii şirului şi scrieţi un program care să citească numerele naturale n, k şi p şi care să determine:

a) numărul de apariţii ale cifrei k printre primii n termeni ai şirului din enunţ;
b) cel de-al p-lea termen al şirului din enunţ.

Date de intrare
Programul citește de la tastatură numerele n k p.

Date de ieșire
Programul va afișa pe ecran două numere naturale:


primul număr va reprezenta numărul de apariţii ale cifrei k printre primii n termeni ai şirului din enunţ;
al doilea număr va reprezenta cel de-al p-lea termen al şirului din enunţ.

Restricții și precizări

Numerele n k p sunt naturale
17 ≤ n ≤100; 0 ≤ k ≤ 9; 1≤ p ≤ 2000000000
Pentru rezolvarea corectă a cerinţei a) se acordă 30% din punctaj iar pentru cerinţa b) 70% din punctaj.

Exemplu:
Intrare

19 4 26
Ieșire

5
7
Explicație
Primii 19 termeni ai şirului sunt: 1,1,2,4,7,3,4,4,1,9,4,4,7,5,6, 8,9,3,0.

Primul număr afişat este 5, deoarece sunt 5 cifre din șir egale cu k (k=4) printre primii n=19 termeni ai şirului.

Al doilea număr afişat este 7, deoarece cel de-al p-lea (p=26) termen al şirului este 7.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int main() {
    int n, k, p, a, b, c, d, nr = 0, y;
    cin >> n >> k >> p;
    a = 1; b = 1; c = 2;
    y = p % 124;
    if (a == k) nr++;
    if (b == k) nr++;
    if (c == k) nr++;
    for (int i = 4; i <= n; i++) {
        d = (a + b + c) % 10;
        a = b; b = c; c = d;
        if (d == k) nr++;
    } a = 1; b = 1; c = 2;
    if (y == 1) d = a;
    else if (y == 2) d = b;
	else if (y == 3) d = c;
	else {
        if (y == 0) y = 124;
        for (int i = 4; i <= y; i++) {
            d = (a + b + c) % 10;
            a = b; b = c; c = d;
        }
    } cout << nr << "\n" << d << "\n";
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/951)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/951/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-951/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
