fbpx

Problema #3074 – numeres – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa