Rezolvare completă PbInfo #1944 Suma6

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.

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

#include <fstream>
#include <iostream>

using namespace std;
ifstream fin("suma6.in");
ofstream fout("suma6.out");

int main()
{
    //nr1=numarul de val construite
    //nr=nr de numere speciale

    int n, s=0, nr=0,  x;
    int a,b,c;
    fin>>n;
    for(int i=1;i<=n;i++)
    {

        fin>>x;
        int y=x, nrc=0, p1=1, z=x;
        while(y)
            {
                y/=10;
                nrc++;
                p1*=10;
            }
        if(nrc!=3)
        {
            while(z>9)
                z/=10;
            int primacif=z;

            int p=1;
            for(int j=1;j<=nrc/2;j++)
                p*=10;

            int cmj=(x/p)%10;
            if (primacif==x%10)
                s+=cmj;
        }
        else
        {
        a=x/100;
        b=x/10%10;
        c=x%10;
        if(a==c)
            {
                nr++;
                s+=b;
            }
        }

    }
    fout<<s<<'\n';
    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 #1944 Suma6

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