fbpx

Problema #966 – xmin – Rezolvari PBInfo

de Mihai-Alexandru

Fie X un număr natural format din exact K cifre, toate nenule, iar S suma cifrelor lui X. Pornind de la aceste numere, se construiește mulțimea M a tuturor numerelor naturale care:

  • au suma cifrelor egală cu S
  • sunt formate fiecare din exact K cifre, toate cifrele fiind nenule.

Pentru fiecare număr din mulțimea M se calculează produsul cifrelor sale. Fie P valoarea maximă a produselor calculate.

Cel mai mic număr din mulțimea M care are produsul cifrelor egal cu P îl vom denumi elementul primar al mulțimii.

Cerinţă

Scrieţi un program care să citească numerele K și X (cu semnificația din enunț) şi care să determine elementul primar al mulțimii M.

Date de intrare

Programul citește de la tastatură numerele K X, numărul X fiind format din K cifre.

Date de ieșire

Programul va afișa pe ecran un număr natural de K cifre reprezentând elementul primar al mulțimii M.

Restricții și precizări

  • 1 ≤ K ≤ 33
  • toate cifrele lui X sunt nenule

Exemplu

Intrare

3
124

Ieșire

223

Explicație

Suma cifrelor numărului X=124 este S=7, iar mulțimea construită este: M = {115,151,511,124,142,214,241,412,421,133,313, 331,223,232,322}. Se obţin următoarele valori ale produselor cifrelor numerelor din M: 5,5,5,8,8,8,8,8,8,9,9,9,12,12,12. Valoarea P=12 se obţine pentru numerele: 223, 232 și 322, iar cel mai mic număr dintre acestea este 223. Astfel, elementul primar al mulțimii M este 223.

#include <bits/stdc++.h>

using namespace std;

int k, a[101];
char n[40];

int main(){
    cin >> k;
    cin >> n;
    int sum = 0;
    int i = 0;
    while(n[i]){
        sum += (int)(n[i] - '0');
        i++;
    }
    int poz = 1;
    while(k){
        a[poz] = sum / k;
        sum -= a[poz];
        poz++;
        k--;
    }
    sort(a + 1, a + poz);
    for(int i = 1; i < poz; ++i)
        cout << a[i];
    return 0;
}
Comentarii

S-ar putea sa iti placa