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 ≤ 7
1 ≤ 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; }