Untitled
unknown
plain_text
3 years ago
2.9 kB
0
Indexable
Never
#include <iostream> #include <fstream> using namespace std; ifstream f("date.txt"); int main() { int fr[9] = {}, CP = -1, nrIMP; int n, x; f >> n; while (f >> x) { fr[x]++; if(x % 2 == 0 && x > CP && fr[x] % 2 == 0) CP = x; //CP = cea mai mare cifra para citita } if (CP == -1) { //Daca nu exista cifre pare... cout << -1; return 0; } if (n % 2 == 0) { //Caz 1 - numar par de cifre for (int i = 0; i <= 9; i++) { //verificam daca sirul poate fi palindrom if (fr[i] % 2 == 1) { cout << -1; return 0; } } for(int i = 0; i < fr[CP] / 2; i++) { // prima(primele) cifra(cifre) din palindrom va(vor) fi cea mai cout << CP; } // mare cifra para for(int i = 9; i >= 0; i--){ // construim prima jumatate a palindromului if(i != CP) // cifrele din interiorul palindromului trebuie sa fie diferite // de CP for(int j = 0; j < fr[i] / 2; j++) cout << i; } for(int i = 0; i <= 9; i++){ //Construim a doua jumatate a palindromului if(i != CP) for(int j = 0; j < fr[i] / 2; j++) cout << i; } for(int i = 0; i < fr[CP] / 2; i++) { // ultima(ultimele) cifra(cifre) din palindrom cout << CP; } // va(vor) fi CP return 0; } if (n % 2 == 1) { //Caz 2 - numar impar de cifre int ok = 2; for (int i = 0; i <= 9; i++) { if (fr[i] % 2 == 1) { nrIMP = i; // Cifra din mijlocul palindromului ok--; } if (ok < 1) { //Daca avem mai mult de 2 cifre cu frecventa impara.. cout << -1; return 0; } } for(int i = 0; i < fr[CP] / 2; i++) { //... cout << CP; } for(int i = 9; i >= 0; i--){ //... if(i != CP) for(int j = 0; j < fr[i] / 2; j++) cout << i; } cout << nrIMP; //Adaugam cifra din mijloc for(int i = 0; i <= 9; i++){ //... if(i != CP) for(int j = 0; j < fr[i] / 2; j++) cout << i; } for(int i = 0; i < fr[CP] / 2; i++) { //... cout << CP; } return 0; } }