👤

Se consideră algoritmul de mai jos, reprezentat în pseudocod.

citeşte n
(număr natural nenul)
k ← 1
m ← 1
┌cât timp n>9 execută
│┌dacă n%10=[n/10]%10 atunci
││ k ← k+1
││┌dacă k>m atunci
│││ m ← k
││└■
││altfel
││ k ← 1
│└■
│ n ← [n/10]
└■
scrie m
S-a notat cu a%b restul împărţirii numărului natural a la numărul natural nenul b şi cu [c] partea întreagă a numărului real c.

Scrieţi numărul de valori din intervalul [10000,99999] care să înceapă cu cifra 1, care pot fi citite pentru variabila n, astfel încât, în urma executării algoritmului, pentru fiecare dintre acestea, să se afişeze valoarea 4.




Răspuns :

k si m pornesk din start cu valoarea 1, ca m sa creasca tr sa fie adevarata conditia k>m, adica sa creasca si k, dar observam k creste daca ultimele doua cifre a numarului sunt egale,  

dacă n%10=[n/10]%10 atunci


    k ← k+1

apoi n se modifica n < - [n/10] , se arunca ultima cifra si iar avem necesitate pt a creste k si m ca ultimele cifre sa fie egale. Deci concluzia:

numerele cautate incep cu 1 si urmeaza patru cifre egale, adica ele sunt 10000, 11111, 12222, 13333, 14444, 15555, 16666, 17777, 18888, 19999.

---- Iata si codul care adevereste cele scrise mai sus ------

Deci avem 10 numere

#include <iostream>

using namespace std;

int main()

{

  int n, c, r, m=1, k=1;

  cin >> n;

  while (n>9)

  {

      if (n%10==(n/10)%10)

      {

          ++k;

          if (k>m)

             m=k;

      }

      else k=1;

     n=n/10;

  }

  cout << m;

}