PDA

View Full Version : [PBINFO] Problema #1509



~Wolf~
01-12-2020, 04:58 PM
Link site: pbinfo (<b>You have to register to ba able to see this link</b>)
Link problema nrmaxim (<b>You have to register to ba able to see this link</b>)
-e draguta si simpluta, s-a dat la admitere UBB in 2015
-aveti grija ca cere doar functie nu tot programul


unsigned int nrmaxim(unsigned int n)
{
unsigned int k=n,contor=0,p=1, max=n;
while(k)
{
contor++; //numaram cifrele numarului dat
p*=10; //construim un numar divizibil cu 10 la care vom adauga cifrele in urmatorul while
k/=10;
}
//impartim la 10 si o sa dau si exemplu ca sa intelegeti de ce am facut asta
//pentru x=3516 dupa while o sa avem p=10*10*10*10=10.000
//observam ca pentru orice numar, p-ul va avea exact o cifra mai mult decat x
//asa ca, pentru a obtine numarul de cifre al lui x, "taiem o cifra" din p
p/=10;
while(contor)//cat timp exista cifre(de asemenea, contor reprezinta si numarul de permutari ale cifrelor)
{
if(n>max)//calculam numarul maxim
max=n;
//n=3516
//p=1000
//n=3516%1000*10+3516/1000 => n=516*10+3
//am dat exemplu ca sa intelegeti ca doar ne jucam cu cifre
//pe scurt, pastram toate cifrele mai putin cea de cel mai mare rang
//pe care o vom duce la final
n=n%p*10+n/p;
contor--;
}
return max;
}