# PBinfo #2213 – sirdivk – Rezolvare C++

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

## Enunț

Cu ajutorul a trei cifre date a, b, c, unde a > 0, se construieşte următorul şir de numere: \( a, \overline{ab},  \overline{abc},  \overline{abca},  \overline{abcab},  \overline{abcabc}, … \). De exemplu, pentru a=1, b=3, c=7, putem construi şirul: 1, 13, 137, 1371, 13713, 137137, 1371371, 13713713, …

Cerința
Scrieţi un program care determină câte numere divizibile cu k se găsesc în primii n termeni ai şirului dat.

Date de intrare
Fișierul de intrare sirdivk.in conține pe prima linie numerele a b c n k.

Date de ieșire
Fișierul de ieșire sirdivk.out conţine o singură linie pe care este scris numărul nr de numere divizibile cu k aflate printre primii n termeni ai şirului dat.

Restricții și precizări

1 < n < 1000
2 ≤ k < 32000
1 ≤ a ≤ 9, 0 ≤ b,c ≤ 9

Exemplu:
sirdivk.in

7 2 1 8 3 
sirdivk.out

2
Explicație
Printre primii 8 termeni ai şirului: 7, 72, 721, 7217, 72172, 721721, 7217217,  72172172,... există doi termeni divizibili cu 3.

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a, b, c, n, k, nr, t, i, r;
    ifstream f("sirdivk.in");
    ofstream g("sirdivk.out");
    f >> a >> b >> c >> n >> k;
    nr = t = 0;
    for(i = 1; i <= n; i++)
    {
        r = i % 3;
        if (r == 1) r = a;
        else if(r == 2) r = b;
        else r = c;
        t = (t * 10 + r) % k;
        if (t == 0) nr++;
    }
    g << nr << "\n";
    g.close();
    f.close();
    return 0;
 }
```

## Resurse

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