312
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
9
cifre - ş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