Se consideră un şir de n (n <= 10000) numere naturale mai mici decât 100. Scrieţi un program eficient care se determine şi să afişeze numărul secvenţelor din şir cu proprietatea că suma elementelor din secvenţă este strict mai mare decât 50. De exemplu, pentru şirul 10, 20, 31, 40, numărul secvenţelor este 5. Acestea sunt: 10 20 31 10 20 31 40 20 31 20 31 40 31 40 O secvenţă este formată dintr-o succesiune de elemente alăturate din şirul iniţial. Nu veţi afişa secvenţele, ci doar câte sunt. Veţi preciza pe scurt şi ideea de rezolvare.
Răspunsuri la întrebare
Răspuns de
0
Complexitate :O(n)
#include <bits/stdc++.h>#define nmax 10001using namespace std;int a[nmax],n;int main(){ int i,j; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; j=1; int s=0,sol=0; for(i=1;i<=n;i++) { s+=a[i]; while(s>50) { sol+=(n-i+1); s-=a[j]; j++; } } cout<<sol<<"\n"; return 0;}
#include <bits/stdc++.h>#define nmax 10001using namespace std;int a[nmax],n;int main(){ int i,j; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; j=1; int s=0,sol=0; for(i=1;i<=n;i++) { s+=a[i]; while(s>50) { sol+=(n-i+1); s-=a[j]; j++; } } cout<<sol<<"\n"; return 0;}
Alte întrebări interesante
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Geografie,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Engleza,
9 ani în urmă