Cum sa primesc 100 de puncte pe pbinfo la problema asta ? (Numere6)
Cerința
Se dau două numere naturale diferite. Afişaţi cel mai mare număr care poate fi scris folosind toate cifrele celor două numere date.
Date de intrare
Fișierul de intrare numere6.in conține pe prima linie cele două numere.
Date de ieșire
Fișierul de ieșire numere6.out va conține pe prima linie numărul cerut.
Restricții și precizări
•cele două numere date vor fi mai mici decât 2 000 000 000
Răspunsuri la întrebare
Răspuns de
5
Răspuns de
1
Poti folosii minunata librarie algoritm iar problema se poate rezolva in aprox. 10 linii de cod. Cum? Folosind functia sort care e foarte rapida pe vectori.
#include <vector<
#include <algorithm>
#include <fstream>
ifstream fi("numere6.in");
ifstream fo("numere6.out");
int main(){
//in loc sa inmagazinezi cifrele ca ca numar ai putea procesa fiecare cifra ca un caracter
vector<int> nrs;
string nr1,nr2;
fi>>nr1>>nr2;
nr1+=nr2;
for(int i=0;i<nr1.size();i++) nrs.push_back(atoi(nr1[i]));
nrs.sort(nrs.begin(),nrs.end());//ordoneaza crescator
for(int i=nrs.size()-1;i>-1;i--) fo<<nrs[i];
return 0;
}
#include <vector<
#include <algorithm>
#include <fstream>
ifstream fi("numere6.in");
ifstream fo("numere6.out");
int main(){
//in loc sa inmagazinezi cifrele ca ca numar ai putea procesa fiecare cifra ca un caracter
vector<int> nrs;
string nr1,nr2;
fi>>nr1>>nr2;
nr1+=nr2;
for(int i=0;i<nr1.size();i++) nrs.push_back(atoi(nr1[i]));
nrs.sort(nrs.begin(),nrs.end());//ordoneaza crescator
for(int i=nrs.size()-1;i>-1;i--) fo<<nrs[i];
return 0;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Engleza,
9 ani în urmă
Geografie,
9 ani în urmă
Limba română,
9 ani în urmă