Informatică, întrebare adresată de info987, 8 ani în urmă

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ă

problema 1903

Răspunsuri la întrebare

Răspuns de pmarian98
1

#include <fstream>

#include <cmath>

using namespace std;

ifstream f("vterminal.in");

ofstream g("vterminal.out");

int Prim(int n)

{

   if(n==0||n==1)  

       return 0;

   else

   {

       for(int d=2;d<=sqrt(n);d++)

           if(n%d==0)  

               return 0;

       return 1;

   }

}

int n, x;

int main()

{

   f>>n;

   int  s=0;

   bool prime=false;

   for(int i=1;i<=n;i++)

   {

       f >> x;

       if(Prim(x)==1)

       {

           prime=true;

           x%=9;

           if(x==0)  

           s+=9;

           else  

           s+=x;

       }

   }

   s%=9;

   if(!prime)

   g<<0;

   else

   if(s==0)

   g<<9;

   else

   g<<s;

   return 0;

}


Alte întrebări interesante