Rezolvare completă PbInfo #1903 vterminal

Andrei a făcut într-o zi un șir de N numere. În a doua zi a lăsat în acel șir doar numerele prime. În a treia zi a calculat pentru fiecare număr rămas în șir suma cifrelor, iar apoi a adunat toate aceste sume în S. După ce a obținut numărul S a început să adune toate cifrele din care este format S și tot așa până când ajunge la o cifră terminală C.

Cerința

Ajutați-l pe Andrei să calculeze cifra terminală C.

Date de intrare

Fișierul de intrare vterminal.in conține pe prima linie numărul N, iar pe a doua linie N numere naturale separate prin spații.

Date de ieșire

Fișierul de ieșire vterminal.out va conține pe prima linie numărul C, reprezentând valoarea cerută.

Restricții și precizări

  • 1 ≤ n ≤ 100
  • numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 1.000

Exemplu

vterminal.in

5
4 11 24 13 97

vterminal.out

4

Explicație

Doar 11, 13 și 97 sunt prime, deci 11 + 13 + 97 = 121
1 + 2 + 1 = 4, deci 4 este cifra terminală

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

#include <iostream>
#include <fstream>
using namespace std;
int n, i, t, m, a;

ifstream f("vterminal.in");
ofstream g("vterminal.out");

int prim(int n)
{
    int i, ok = 1;
    if(n == 1)
        return 0;
    for(i = 2; i * i <= n; i++)
        if(n % i == 0)
        {
            ok = 0;
            break;
        }
    return ok;
}

int sumcif(int n)
{
    int s = 0;
    while(n)
    {
        s += n % 10;
        n /= 10;
    }
    return s;
}

int main()
{
    f >> n;
    for(i = 1; i <= n; i++)
    {
        f >> m;
        if(prim(m))
            t += sumcif(m);
    }
    while(t > 9)
        t = sumcif(t);
    g << t;
    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 #1903 vterminal

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