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
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;
}
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
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Franceza,
9 ani în urmă
Limba română,
9 ani în urmă