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.
Răspunsuri la întrebare
Răspuns de
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
Biologie,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă