Rezolvare completă PbInfo #2363 joc8

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

Exemplu

joc8.in

10
193 7 721 14263 28 279 9 1523142 769 15752 

joc8.out

6

Explicație

Numerele alternante sunt: 193, 7, 14263, 9, 1523142, 769.

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 joc8:

#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("joc8.in");
ofstream fout("joc8.out");
int main()
{
    int a,b,x,y,d,ok,k,n,nr=0;
    fin>>n;
    for(int i=1; i<=n; i++)
    {
        fin>>x;
        k=0;
        y=x;
        while(y)
        {
            k++;
            y=y/10;
        }
        if (k%2==0)
            ok=0;
        else
            if(x<=9)
            ok=1;
        else
        {
            ok=1;
            a=x%10;
            b=x/10%10;
            x=x/100;
            d=a-b;
            a=b;
            while(x&&ok)
            {
                b=x%10;
                if(d*(a-b)>=0)
                    ok=0;
                else
                {

                    d=a-b;
                    a=b;
                    x=x/10;
                }
            }
        }
        if (ok)
            {
                nr++;
               
            }
    }
    fout<<nr;
    fin.close();
    fout.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 #2363 joc8

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2363 joc8 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!