Informatică, întrebare adresată de bosssugus, 9 ani în urmă

PBINFO Problema 1475 Victor a primit în dar de la mama sa un joc cu n numere naturale, fiecare dintre ele având număr impar de cifre. Din fiecare număr din joc, el trebuie să extragă cifra din mijloc.

Numărul de puncte pe care le câştigă Victor este egal cu suma cifrelor impare situate în mijlocul fiecărui număr dat.

Cerinţă
Cunoscând numărul n de numere, precum şi cele n numere naturale pe care le primeşte Victor, ajutaţi-l să calculeze corect suma cifrelor impare din mijlocul fiecărui număr citit.

Date de intrare
Fişierul numere14.in conţine pe prima linie numărul n de numere naturale, iar pe următoarea linie n numere naturale având număr impar de cifre.

Date de ieşire
Fişierul numere14.out va conţine pe prima linie un număr ce reprezintă suma cifrelor impare situate în mijlocul fiecărui număr citit.

Restricţii şi precizări
1 < n < 1000000
cele n numere din joc au cel mult 9 cifre fiecare
numere14.in

5
123 34567 222 271 1523412
numere14.out

15

Răspunsuri la întrebare

Răspuns de TCP
5
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

ifstream fin("numere14.in");
ofstream fout("numere14.out");
int main()
{
long long n,x,y,i,k,j,s=0;
fin>>n;
for(i=1;i<=n;i++)
{
k=0;
y=0;
fin>>x;
while(x)
{
y=y*10+x%10;
x /=10;
++k;
}
for(j=1;j<=k/2;++j) y /=10;
if(y%10%2) s+=y%10;
}
fout<<s;
}
Răspuns de stassahul
2
#include <fstream>
#include <cstring>

using namespace std;

ifstream fin("numere14.in");
ofstream fout("numere14.out");

int n,S;
char s[10];

int main()
{

    fin >> n;

    for(;n;n--)
    {
        fin >> s;
        if((s[strlen(s)/2]-'0')%2)
            S+=s[strlen(s)/2]-'0';
    }

    fout << S;

    return 0;

}

stassahul: O solutie mai eficienta si mai putin obisnuita :)
Alte întrebări interesante