Rezolvare completă PbInfo #2213 sirdivk

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.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema sirdivk:

#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;
 }

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2213 sirdivk

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2213 sirdivk de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!