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

Se dă un şir format din n elemente, numere naturale. Calculaţi suma elementelor din secvenţa determinată de primul şi ultimul element prim.

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.

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

Răspunsuri la întrebare

Răspuns de ated
4
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

int main()
{
    ifstream in("sumsec.in");
    ofstream out("sumsec.out");
    int n = 0, v[1000], prim1 = 0, prim2 = 0;
    long long s = 0;
    in >> n;
    for (int i=0; i<n; i++)
    {
        in >> v[i];
        int OK = 1;
        for (int j=2; j<=sqrt(v[i]) && OK; j++)
            if (v[i]%j==0)
                OK = 0;
        if (OK && v[i] != 0 && v[i] != 1)
        {
            if (!prim1)
            {
                prim1 = i;
                prim2 = i;
            }
            else
                prim2 = i;
        }
    }
    for (int i=prim1; i<=prim2; i++)
        s += v[i];
    out << s;
    return 0;
}

Alte întrebări interesante