IT şi electronică > Programare

cel mai mic si cel mai mare nr cu suma cifrelor egala cu un nr n

(1/1)

Ayumi:
Buna ziua !
Am gasit urmatoarea problema:
Pe 10 cartonase se afla toate cifrele.Fratele lui Gigel trebuie sa formeze cel mai mare si cel mai mic numar natural care are suma cifrelor egala cu un numar spus de Gigel.De exemplu,daca Gigel spune n = 28(0 <= n <= 45) atunci fratele sau alege cartonasele 4,7,8,9 si formeaza cel mai mic nr = 4789 si cartonasele 0,1,2,3,4,5,6,7 formand 76543210.
Cum as putea sa o rezolv? Ar fi metoda vectorului caracteristic buna in acest caz? Nu am prea folosit-o,dar poate ca se aplica aici,nu?

Quantum:
O solutie:

--- Cod: ---#include <iostream>
using namespace std;

int main()
{
    int x,a[10],j=0;
   
    do
    {
    cout << "Introduceti un numar intre 0 si 45: ";
    cin >> x;
    }
    while ((x<0)||(x>45));
   
    int total=x;
    cout<<"Cel mai mic numar: ";
    if(x<=9)
    {
        cout<<x;
    }
    else
    {
        for (int i=9;i>=0;i--)
        {
              if ((total-i)>=0)
              {       
                total-=i;   
                a[j]=i;
                j++;
              }       
         }
         for (j=j-2;j>=0;j--)
         {
                cout<<a[j];
         }
     }

    cout<<endl;
    j=0;
    total=0;
    cout<<"Cel mai mare numar: ";
    int i=0;
    for (;i<=9;i++)
    {
        if((x-(total+i))<0)
        {
                break;
        }
       
                total+=i;
                a[j]=i;   
                j++; 
    }
    j--;
    i--;
    a[j]=x-(total-i);
    for ( ;j>=0;j--)
    {
        cout<<a[j];
    }
    return 0;
}

--- Terminare cod ---

Navigare

[0] Indexul de Mesaje

Du-te la versiunea completă