Informatică, întrebare adresată de UwU23, 8 ani în urmă

Numim k-secvență într-un șir de numere naturale, o succesiune de termeni aflați pe poziții consecutive în șir, cu proprietatea că sunt divizibili cu numărul natural nenul k. Lungimea secvenței este egală cu numărul de termeni ai săi.
Fișierul bac.txt conține numere naturale din intervalul [0,109]: pe prima linie un număr nenul k, iar pe a doua linie un șir de cel mult 106 numere, separate prin câte un spațiu. Cel puțin un termen din șir este divizibil cu k. Se cere să se afișeze pe ecran două valori, separate printr-un spațiu, reprezentând lungimea maximă a unei k-secvențe din șirul aflat în fișier, respectiv numărul de astfel de secvențe.
Proiectați un algoritm eficient din punctul de vedere al memoriei utilizate și al timpului de executare.

5
2 10 5 20 21 0 10 60 15 3 9 20 20 5 45
Pe ecran se va afișa 4 2

Răspunsuri la întrebare

Răspuns de Sebimg
6

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

int x,k,l,lmax,nr;

int main()

{

   ifstream f("date.in");

   f>>k;

   while(f>>x)

   {

       if(x%k==0)

           l++;

       else l=0;

       if(l>lmax)

       {

           lmax=l;

           nr=1;  

       }

      else if(l==lmax)

           nr++;

   }

   cout<<lmax<<" "<<nr;

   return 0;

}

Explicație:

Alte întrebări interesante