Salut. Ma poate ajuta cineva cu aceasta problema de informatica clasa a 12-a? este din testul de antrenament bac 2007 profil real varianta 17 (c++ va rog). Thx.
Răspunsuri la întrebare
Explicație:
a) Se parcurg in paralel cele două numere cat timp ambele au cifre, se compara cifrele aflate în acel moment pe ultima poziție, se afișează cifra mai mare, apoi se taie din numărul in care se afla, celalalt număr rămânând la fel. In caz de egalitate, se afișează ambele și se taie cifra din ambele.
După aceea, se iau separat cele două numere, verificandu-se daca mai exista cifre, in acel caz afișandu-se fără nicio comparație, nemaifiind necesara. Eficienta este data de faptul că nu se rețin cifrele in tablouri auxiliare și se parcurg numerele o singura data, având complexitatea de spatiu și de timp O(m+n).
b)
#include <iostream>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
do
{
if(n % 10 > m % 10)
{
cout << n % 10;
n /= 10;
}
else if(n % 10 < m % 10)
{
cout << m % 10;
m /= 10;
}
else
{
cout << n % 10 << m % 10;
n /= 10;
m /= 10;
}
}
while(n > 0 && m > 0);
while(n > 0)
{
cout << n % 10;
n /= 10;
}
while(m > 0)
{
cout << m % 10;
m /= 10;
}
return 0;
}