406
Cerinţa
Se dă un şir format din n elemente, numere naturale. Calculaţi suma elementelor din secvenţa determinată de primul şi ultimul element prim.
Date de intrare
Fişierul de intrare sumsec.in conţine pe prima linie numărul n; urmează cele n elemente ale vectorului, dispuse pe mai multe linii şi separate prin spaţii.
Date de ieşire
Fişierul de ieşire sumsec.out va conţine pe prima linie numărul S, reprezentând suma calculată.
Restricţii şi precizări
1 ≤ n ≤ 1000- elementele şirului vor avea cel mult
9cifre - şirul va conţine cel puţin un element prim
Exemplu
sumsec.in
8 12 10 15 7 17 10 19 14
sumsec.out
53
Explicație
7+17+10+19=53
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sumsec.in");
ofstream fout("sumsec.out");
int prim(int n)
{
int cnt=1;
int d=2;
while(n>1)
{
int p = 0;
while(n%d==0)
{
p++;
n/=d;
}
if(p>0)
cnt*=(p+1);
d++;
if(d*d>n)
d=n;
}
if(cnt==2)
return 1;
else
return 0;
}
int main()
{
int n;
fin >> n;
long long int a[1000];
int cnt=0;
long long int p = 0 , u = 0 , s = 0;
for(int i = 0 ; i < n ; ++i)
{
fin >> a[i];
if(prim(a[i]) && cnt==0)
{
p=i;
cnt++;
}
if(prim(a[i]))
u=i;
}
for(int i = p ; i <= u ; ++i)
{
s+=a[i];
}
fout << s;
fin.close();
fout.close();
return 0;
}
Comentarii