Se da un numar natural <2000000000 in variabila n. Se cere sa se construiasca un vector cu cifrele lui n si apoi sa se afiseze cel mai mare si cel mai min numar palindrom, care se poate forma cu aceste cifre.Daca nu exista astfel de numere se va afisa mesajul "Nu exista".
Exemplu:pentru numarul 2020 se va afisa 2002 si 2002.
In c sau c++ va rog
artur99:
aaaa, e din culegere... Asta întrebam
Răspunsuri la întrebare
Răspuns de
1
#include <iostream>
#include <algorithm>
using namespace std;
int invers(int n){
int nr=0;
while(n){
nr=nr*10+n%10;
n/=10;
}
return nr;
}
int val(int x[], int n){
int i,nr=0;
for(i=0;i<n;i++){
nr=nr*10+x[i];
}
return nr;
}
int verif(int x[], int n){
int i;
if(x[0]==0)return 0;
for(i=0;i<n/2;i++)
if(x[i]!=x[n-i-1])return 0;
return 1;
}
int main(){
int n,i,pmax=-1,pmin=2000000001,v[10],k=0,vl;
cin>>n;
while(n){
v[k]=n%10;
k++;
n/=10;
}
sort(v,v+k);
do{
if(verif(v,k)){
vl=val(v,k);
if(vl>pmax)pmax=vl;
if(vl<pmin)pmin=vl;
}
}while(next_permutation(v,v+k));
if(pmax==-1)cout<<"Nu exista";
else cout<<pmax<<" "<<pmin;
}
#include <algorithm>
using namespace std;
int invers(int n){
int nr=0;
while(n){
nr=nr*10+n%10;
n/=10;
}
return nr;
}
int val(int x[], int n){
int i,nr=0;
for(i=0;i<n;i++){
nr=nr*10+x[i];
}
return nr;
}
int verif(int x[], int n){
int i;
if(x[0]==0)return 0;
for(i=0;i<n/2;i++)
if(x[i]!=x[n-i-1])return 0;
return 1;
}
int main(){
int n,i,pmax=-1,pmin=2000000001,v[10],k=0,vl;
cin>>n;
while(n){
v[k]=n%10;
k++;
n/=10;
}
sort(v,v+k);
do{
if(verif(v,k)){
vl=val(v,k);
if(vl>pmax)pmax=vl;
if(vl<pmin)pmin=vl;
}
}while(next_permutation(v,v+k));
if(pmax==-1)cout<<"Nu exista";
else cout<<pmax<<" "<<pmin;
}
Alte întrebări interesante
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Engleza,
9 ani în urmă
Matematică,
9 ani în urmă
Istorie,
9 ani în urmă