👤


Elena și Maria au primit cadou un joc. Dintr-o cutie ce conține mai multe numere, fiecare extrage pe rand câte un număr și trebuie să descopere anumite condiții îndeplinite de aceste numere. Ele vor să determine câte numere alternante au fost extrase. Un număr este alternant dacă are număr impar de cifre și dacă orice cifră a numărului, cu excepția primei și a ultimei cifre se învecinează fie cu două cifre mai mari decât ea, fie cu două cifre mai mici decât ea.

Cerința
Cunoscând numărul n de numere, precum şi cele n numere naturale extrase din cutie determinați câte dintre acestea au fost alternante.

Date de intrare
Fișierul de intrare joc8.in conţine pe prima linie numărul n de numere naturale, iar pe următoarea linie cele n numere naturale.

Date de ieșire
Fișierul de ieșire joc8.out va conţine pe prima linie un număr ce reprezintă numărul numerelor alternante citite.

Restricții și precizări
1 < n < 1000000
cele n numere din joc au cel mult nouă cifre fiecare


Răspuns :

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("joc8.in");

ofstream g("joc8.out");

short c[10], alt, k, j;

int i, n, num, difst, difdr, rez;

int main()

{

   f >> n;

   for (i=1; i<=n; ++i)

   {

       f >> num;

       k=0;

       while (num)

       {

           ++k; c[k]=num%10;

           num/=10;

       }

       if (k%2)

       {

           if (k==1) ++rez;

           else

           {

              alt=1;

              difst=c[1]-c[2];

              for (j=2; j<k; ++j)

              {

                  difdr=-difst; difst=c[j]-c[j+1];

                  if (!(difst*difdr>0)) { alt=0; break; }

              }

              if (alt) ++rez;

           }

       }

   }

   g << rez;

   return 0;

}


Alte intrebari