Răspuns :
Complexitate timp : O(N)
Complexitate memorie: O(1)
Putem accesa cifrele numarului in complexitate O(1).
Codul este format din 6 cifre. Fie un numar x. Prin operatia x%10 obtinem ultima cifra a numarului. Ca sa accesam penultima cifra calculam x/10%10. Pentru a accesa antepenultima cifra calculam x/100%10.
Conform acestui tipar, pentru a accesa prima cifra a codului de 6 cifre folosim x/10000%10 (eventual si x/1 000 000 deoarece este prima cifra). Pentru a accesa a doua cifra a numarului calculam x/10000%10.
Fie X numarul bancii. Mai intai trebuie sa vedem daca clientul cu codul A are cont deschis la acea banca, deci daca A/1000000 =X. Daca clientul are cont deschis la acea banca verificam daca este barbat A/10000%10 =1.
Suma o putem calcula prin accesarea in acelasi mod a ultimelor 4 cifre.
#include <iostream>
using namespace std;
int main()
{
ifstream fin("conturi.in");
ofstream fout("coduri.out);
unsigned long long cod, sMax = 0, sCurent;
unsigned short N, X;
fin>>N>>X;
for(unsigned short i=1; i<=N; i++)
{
fin>>cod;
if(cod/1000000==X && cod/10000%10 == 1)
{
sCurent = 1000*cod/1000%10 + 100*cod/100%10 + 10*cod/10%10 + cod%10;
if(sCurent > sMax) sMax = sCurent;
}
fout<<sCurent;
}
Complexitate memorie: O(1)
Putem accesa cifrele numarului in complexitate O(1).
Codul este format din 6 cifre. Fie un numar x. Prin operatia x%10 obtinem ultima cifra a numarului. Ca sa accesam penultima cifra calculam x/10%10. Pentru a accesa antepenultima cifra calculam x/100%10.
Conform acestui tipar, pentru a accesa prima cifra a codului de 6 cifre folosim x/10000%10 (eventual si x/1 000 000 deoarece este prima cifra). Pentru a accesa a doua cifra a numarului calculam x/10000%10.
Fie X numarul bancii. Mai intai trebuie sa vedem daca clientul cu codul A are cont deschis la acea banca, deci daca A/1000000 =X. Daca clientul are cont deschis la acea banca verificam daca este barbat A/10000%10 =1.
Suma o putem calcula prin accesarea in acelasi mod a ultimelor 4 cifre.
#include <iostream>
using namespace std;
int main()
{
ifstream fin("conturi.in");
ofstream fout("coduri.out);
unsigned long long cod, sMax = 0, sCurent;
unsigned short N, X;
fin>>N>>X;
for(unsigned short i=1; i<=N; i++)
{
fin>>cod;
if(cod/1000000==X && cod/10000%10 == 1)
{
sCurent = 1000*cod/1000%10 + 100*cod/100%10 + 10*cod/10%10 + cod%10;
if(sCurent > sMax) sMax = sCurent;
}
fout<<sCurent;
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile și inspiraționale. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, suntem aici pentru a vă ajuta. Ne face plăcere să vă revedem și vă invităm să adăugați site-ul nostru la favorite pentru acces rapid!