fbpx

Problema #2363 – joc8 – Rezolvari PBInfo

de Mihai-Alexandru

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.

#include <bits/stdc++.h>
using namespace std;
ifstream cin("joc8.in");
ofstream cout("joc8.out");
int special(int n)
{
    int v[100];
    bool perf=true;
    int p = 0;
    while(n)
    {
        v[p]=n%10;
        p++;
        n/=10;
    }
    if(p%2==1)
    {
        p--;
        for(int i = 1 ; i < p ; ++i)
        {
            if((v[i]<v[i-1] && v[i+1] > v[i])||(v[i]>v[i-1] && v[i+1]<v[i]))
            {

            }
            else
                perf=false;
        }
    }
    else
        perf=false;
    if(perf)
        return 1;
    else
        return 0;
}

int main()
{
    int n;
    cin >> n;
    int cnt=0;
    int x;
    for(int i = 0 ; i < n ; ++i)
    {
        cin >> x;
        if(special(x))
           cnt++;
    }
    cout << cnt;
    return 0;
}
Comentarii

S-ar putea sa iti placa