382
Cerința
Scrieți un program care să afișeze, în ordine crescătoare, toate numerele naturale formate din câte n cifre și care au suma cifrelor egală cu s, precum și câte astfel de numere există.
Date de intrare
Programul citește de la tastatură numerele naturale n și s, separate prin spații.
Date de ieșire
Programul va afișa numerele determinate pe prima linie a ecranului, în ordine crescătoare, separate prin câte un spațiu. Pe a doua linie va afișa numărul acestor numere. Dacă nu există astfel de numere, va afișa valoarea 0 pe prima linie a ecranului.
Restricții și precizări
1 ≤ n ≤ 71 ≤ s ≤ 63
Exemplu
Intrare
2 5
Ieșire
14 23 32 41 50 5
Explicație
Pentru valorile citite: n=2 și s=5 se vor afișa numerele 14, 23, 32, 41, 50; în total sunt 5 numere.
#include <bits/stdc++.h>
using namespace std;
int sc(int i)
{
int sum = 0;
while(i)
{
sum += i % 10;
i/=10;
}
return sum;
}
int main()
{
int n, s;
cin >> n >> s;
int min = pow(10, n-1);
int max = pow(10, n-1) * 9;
for(int i = 0 ; i < n-1; ++i)
max+=pow(10, i) * 9;
int cnt = 0;
for(int i = min; i <= max; ++i)
{
if(sc(i) == s)
cout << i << ' ', cnt++;
}
if(cnt!=0)
cout << endl << cnt;
else
cout << 0;
return 0;
}
Comentarii