Ştiri:

Vă rugăm să citiţi Regulamentul de utilizare a forumului Scientia în secţiunea intitulată "Regulamentul de utilizare a forumului. CITEŞTE-L!".

Main Menu

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

Creat de Ayumi, Ianuarie 15, 2012, 11:43:53 AM

« precedentul - următorul »

0 Membri şi 1 Vizitator vizualizează acest subiect.

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:

#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;
}