Informatică, întrebare adresată de neoclipcs, 8 ani în urmă

Problema cifre004 #2223 de pe pbinfo.ro.

Cerința

Se dă n număr natural. Aflaţi cel mai mare număr natural care are numărul de cifre şi suma cifrelor egale cu suma cifrelor lui n.


Date de intrare

Programul citește de la tastatură numărul n.


Date de ieșire

Programul va afișa pe ecran cel mai mare număr natural care are numărul de cifre şi suma cifrelor egale cu suma cifrelor lui n.


Restricții și precizări

1 ≤ n ≤ 2.000.000.000


Exemplu

Intrare


203

Ieșire


50000

Explicație

Avem n=203, iar suma cifrelor sale este 5. Cel mai mare număr de 5 cifre, care are suma cifrelor egală cu 5, este 50000.


Uitandu-ma pe rezolvari, am dat peste acest cod :


#include

using namespace std;

int main() {

   long n;

   cout<<"n=";

   cin>>n;

   int s=0;

   while(n!=0)

   {

       s+=n%10;

       n = n/10;

   }

   unsigned long long numar=0;

   int nr_9 = s/9;

   int rest = s % 9;

   for(int i=0; i
       numar=numar*10+9;

   numar=numar*10+rest;

   for(int i=0; i
       numar*=10;

   cout<
   return 0 ;

}

de pe https://brainly.ro/tema/5582884


As vrea ca cineva, priceput la informatica, sa-mi explice cum ruleaza codul de mai sus. Am impresia ca se leaga cumva de "cifra de control" a unui numar, dar nu sunt sigur pentru ca nu am intrat inca atat de "deep" in c++.

Va multumesc anticipat...



neoclipcs: Lol am facut problema intre timp.
neoclipcs: Dar daca tot vreti sa.mi explicati puteti scrie =)

Răspunsuri la întrebare

Răspuns de pmarian98
2

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n,  cif, sumacifn=0, n9, r9, i, j;

   char num[91];

   cin >> n;

   int copie=n;

   while (copie) {  cif=copie%10; copie/=10; sumacifn+=cif; }

   n9=sumacifn/9; r9=sumacifn%9;

  int numar [91];

  for (j=1; j<=n9; ++j) numar[j]=9;

  if (n9==0) { j=1; numar[j]=r9; }

  else {  numar[j]=r9; }

  for (i=j+1; i<=sumacifn; ++i)  numar[i]=0;

   for (i=1; i<=sumacifn; ++i)

   {

       num[i]=numar[i]+'0';

   }

   for (i=1; i<=sumacifn; ++i) cout << num[i];

    cout << "\n";

   return 0;

}

Explicație:

Alte întrebări interesante