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

Salut, ma poate ajuta cineva cu problema 1903 de pe pbinfo.ro?
Problema:
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.

Răspunsuri la întrebare

Răspuns de stassahul
6
#include <fstream>

using namespace std;

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

int prime(int a);
int n;

int main()
{

    fin >> n;

    int x,S=0,k;

    for(int i=1;i<=n;i++)
    {
        fin >> x;
        if(prime(x))
            S+=x;
    }

    while(true)
    {
        k=0;
        while(S!=0)
        {
            k+=S%10;
            S/=10;
        }
        S=k;
        if(k<10)
            break;
    }

    fout << k;

    return 0;

}
int prime(int a)
{
   int i;
   if(a==2)
      return 1;
   if(a==0 or a==1 or a%2==0)
      return 0;
   for(i=3;i*i<=a and a%i;i+=2)
      ;
   return i*i>a;
}


Alte întrebări interesante