Olimpiada Judeteana de Informatica 2022. Rezolvare problema „Sume si secvente” in C++, clasa a V-a
Mai jos veti gasi problema „Sume si secvente” sau „sss” data la Olimpiada Judeteana de Informatica in anul 2022 la clasa a V-a, iar dupa textul problemei veti gasi si rezolvarea mea.
Problema sss:
Se da un numar N, si un sir de N numere naturale nenule.
Cerinte:
- Determinati suma valorilor aflate pe ultimele K pozitii ın sir (unde K reprezinta valoarea celei mai din dreapta cifre nenule a primei valori din sir).
- Ne imaginam ımpartirea sirului ın secvente ın urmatorul mod: prima secventa este formata din primele L elemente, a doua este formata din urmatoarele L – 1 elemente, a treia este formata din urmatoarele L – 2 elemente si asa mai departe, ultima secventa este formata dintr-un singur element si acesta coincide cu ultimul element din sir. Considerand suma valorilor fiecarei secvente, sa se determine cea mai mare dintre aceste sume.
Date de intrare:
Pe prima linie a fisierului sss.in se afla doua valori C si N separate printr-un spatiu. Pe linia a doua se afla N numere naturale separate prin cate un spatiu. Pentru C = 1 se rezolva doar cerinta 1 iar pentru C = 2 se rezolva doar cerinta 2.
Date de iesire:
Fisierul sss.out contine un singur numar care reprezinta valoarea calculata conform cerintei.
Restrictii si precizari:
- 1 <= N <= 100.000
- Valorile din sir sunt numere naturale nenule 100.000;
- Se garanteaza ca pentru testele ın care C = 1 sirul are cel putin K elemente;
- Se garanteaza ca valoarea lui N permite descompunerea conform descrierii, pentru testele care au C = 2;
- Pentru teste ın valoare de 51 de puncte avem C=1;
- Pentru 27 de puncte dintre testele ın care C=1 primul numar din sir are o cifra;
- Pentru teste ın valoare de 49 de puncte avem C=2;
- Pentru teste ın valoare de 22 de puncte dintre cele care au C=2, valoarea lui N este mai mica sau egala cu 10;
- Denumirea problemei este o prescurtare de la ”sume si secvente”
Exemplul 1:
sss.in:
1 6
120 4 21 5 31 6
sss.out:
37
Explicatii:
Ultima cifra nenula a primului element din sir este 2. Suma ultimelor doua valori din sir este 37.
Exemplul 2:
sss.in:
2 10
1 4 2 1 3 6 1 6 5 3
sss.out:
11
Explicatii:
Descompunerea se poate realiza ın secvente de lungimile 4, 3, 2 si 1. Sumele obtinute pentru fiecare sunt: 8, 10, 11, 3.
Mai jos veti gasi metoda mea de rezolvare a problemei:
#include <iostream> #include <fstream> using namespace std; ifstream fin("sss.in"); ofstream fout("sss.out"); int task = 0, n = 0, l = 0, s = 0, smax = 0, nr = 0, task1$ = 0, task2$ = 0; void task1() { int i, dig; fin >> nr; while(nr%10 == 0) nr /= 10; dig = nr%10; for (i = 2; i<=n; i++) { fin >> nr; if(i >= (n-dig+1)) task1$ += nr; } fout << task1$; } void task2() { int i; if (n == 1) { fin >> nr; task1$ = nr; fout << task2$; return; } if (n == 3) { fin >> nr; s = nr; fin >> nr; s += nr; smax = s; fin >> nr; s = nr; if (s > smax) smax = s; task2$ = smax; fout << task2$; return; } while (s < n) { l++; s+=l; } smax = 0; for (i = l; i > 0; i--) { s = 0; for (int k = 0; k < i; k++) { fin >> nr; s += nr; } if (s > smax) smax = s; } task2$ = smax; fout << task2$; } int main() { fin >> task >> n; switch (task) { case 1: task1(); break; case 2: task2(); default:; } return 0; }
Sper sa va fie de folos. 😉
Daca aveti intrebari, va rog sa lasati un mesaj mai jos in comentarii.
Author: Sebastian Chetroni
Website: https://zcoder.ro
Articole recente
- Olimpiada Nationala de Informatica 2023. Rezolvare problema „Cadouri” in C++, clasa a V-a
- Olimpiada Nationala de Informatica 2023. Rezolvare problema „Patinaj” in C++, clasa a V-a
- Olimpiada Judeteana de Informatica 2018. Rezolvare problema „Forus” in C++, clasa a V-a
- Olimpiada Judeteana de Informatica 2018. Rezolvare problema „Patrate” in C++, clasa a V-a
- Olimpiada Judeteana de Informatica 2019. Rezolvare problema „Cartele” in C++, clasa a V-a
Comentarii recente
- irina c la Olimpiada Judeteana de Informatica 2021. Rezolvare problema „Concurs” in C++, clasa a V-a
- M la Olimpiada Judeteana de Informatica 2022. Rezolvare problema „Sume si secvente” in C++, clasa a V-a
- Sebastian Chetroni la Olimpiada Judeteana de Informatica 2023. Rezolvare problema „Aeriana” in C++, clasa a V-a
- andrei toma la Olimpiada Judeteana de Informatica 2023. Rezolvare problema „Aeriana” in C++, clasa a V-a
- andrei nicolescu la Am fost in tabara educationala de vara Atlantykron. Voi mai merge
AI PUTEA SA PUI SI COMENTARI IN COD?