fbpx

Problema #1903 – vterminal – Rezolvari PBInfo

de Mihai-Alexandru

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ă

#include <bits/stdc++.h>
using namespace std;
ifstream fin("vterminal.in");
ofstream fout("vterminal.out");
int prim(int n)
{
    if(n==0 || n==1) return 0;
    if(n==2) return 1;
    if(n%2==0) return 0;
    else
        for(int d=3;d*d<=n;d+=2)
    {
        if(n%d==0) return 0;
    }
    return 1;
}
int main()
{
    int n,x,s=0;
    fin>>n;
    for(int i=1;i<=n;i++)
        {
            fin>>x;
            if(prim(x)) s=s+x;
        }
    fout<<s%9;
    return 0;

}
Comentarii

S-ar putea sa iti placa