Informatică, întrebare adresată de alexlolshockp1aywd, 9 ani în urmă

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ăspunsuri la întrebare

Răspuns de boiustef
8

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;

}



boiustef: sper ca am fost explicit.... succese!
alexlolshockp1aywd: in barem e 18 si am facut program si tot da diferit :))
alexlolshockp1aywd: lasa, da-o naiba de problema
boiustef: adica nu da 4 pt numerele scrise in postare?
boiustef: eu l-am testat... scrie 4 pt numerele mentionate
Alte întrebări interesante