# PBinfo #1944 – suma6 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

La ultima oră de matematică, Ionel a învățat despre numere speciale. Acestea sunt numere naturale cu număr impar de cifre care au prima cifră egală cu ultima. Ionel a primit ca temă să analizeze un șir format din numere având număr impar de cifre. El trebuie să determine suma cifrelor din mijloc, de la numerele speciale care se găsesc în șirul dat.

Cerința
Se citește numărul natural n și apoi se citesc n numere naturale având fiecare număr impar de cifre. Să se calculeze suma cifrelor din mijlocul numerelor speciale din șirul dat.

Date de intrare
Fișierul de intrare suma6.in conține pe prima linie numărul natural n. Pe a doua linie în fișier, se găsesc separate prin câte un spațiu n numere naturale, fiecare având număr impar de cifre.

Date de ieșire
Fișierul de ieșire suma6.out va conține pe prima linie un număr ce reprezintă suma cifrelor din mijlocul numerelor speciale din șirul dat.

Restricții și precizări

1 ≤ n ≤ 1000
cele n numere au cel mult nouă cifre
pentru 30% dintre teste cele n numere au exact trei cifre

Exemplu:
suma6.in

5
122 13501 407 212 49974
suma6.out

15
Explicație
Numerele speciale din șirul dat sunt: 13501, 212 și 49974. 
Suma cifrelor din mijlocul lor este: s= 5 + 1 + 9 = 15.

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
ifstream in("suma6.in");
ofstream out("suma6.out");
int main() {
    int n, s = 0, nr = 0, x;
    int a, b, c;
    in >> n;
    for (int i = 1;i <= n; i++) {
        in >> x;
        int y = x, nrc = 0, p1 = 1, z = x;
        while (y != 0) {
            y = y / 10;
            nrc++;
            p1 = p1 * 10;
		} if (nrc != 3) {
            while (z > 9) z = z /10;
            int primacif = z;
            int p = 1;
            for (int j = 1; j <= nrc / 2; j++)
                p = p * 10;
            int cmj = (x / p) % 10;
            if (primacif == x % 10)
                s = s + cmj;
        } else {
        a = x / 100;
        b = x / 10 % 10;
        c = x % 10;
        if (a == c) {
            nr++;
            s = s + b;
            }
        }
    } out << s << "\n";
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1944)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1944/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1944/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
