Informatică, întrebare adresată de andy7790, 8 ani în urmă

Va rog,e urgent! In C++

Cerinţa Scrieţi definiția completă a subprogramului C++ cu antetul: long long NrSecvS(int a[], int n, int S) care are trei parametri: a, prin care primeşte un tablou unidimensional de numere naturale nenule n, numărul efectiv de elemente ale tabloului S, un număr natural nenul Subprogramul furnizează returnează numărul de secvențe din vector care au suma strict mai mare decât S. Restricţii şi precizări 1 ≤ a[i] ≤ 1.000 1 ≤ S ≤ 10.000 2 ≤ n ≤ 1.000.000 numele subprogramului cerut este NrSecvS parametrii sunt, în această ordine: a, n, S elementele vectorului a sunt indexate de la 1 O secvență este formată din elemente aflate pe poziții consecutive în vector. Exemplu Dacă n=4, a=(3,6,3,1), S = 10, funcția va returna 2, cele două secvențe de sumă strict mai mare decât 10 fiind 3,6,3 și 3,6,3,1. Important Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei. ​

Răspunsuri la întrebare

Răspuns de crow9920
4

long long NrSecvS(int a[], int n, int S) {

long long nr_secv = 0;

int s[1000001] = {0};

int sum = 0;

for (int i = 1; i <= n; i++) {

sum += a[i];

s[i] = sum;

}

for (int i = 1; i <= n; i++) {

for (int j = i; j <= n; j++) {

int sum_secv = s[j] - s[i - 1];

if (sum_secv > S) {

nr_secv += (n - j + 1);

break;

}

}

}

return nr_secv;

}

Alte întrebări interesante