Advertisement
Guest User

Prefixes

a guest
Dec 21st, 2014
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. using namespace std;
  5.  
  6. void backtracking (int n, int comb, bool& primer, const vector<int> & mult, priority_queue <int, vector<int>, greater<int> >& Q)
  7. {
  8.     if (n == 0) Q.push(comb);
  9.     else {
  10.         int i = 0;
  11.         if (primer) {
  12.             i = 1;
  13.             primer = false;
  14.         }
  15.         for (; i <= 9; ++i) {
  16.             int aux = comb*10 + i;         
  17.             bool trobat = false;
  18.             int j = 0;
  19.             while (not trobat and j < (int)mult.size()) {
  20.                 trobat = aux%mult[j] == 0;
  21.                 ++j;
  22.             }
  23.             if (not trobat) backtracking (n-1, aux, primer, mult, Q);
  24.            
  25.         }
  26.     }
  27. }
  28. int main () {
  29.     int n, m;
  30.     while (cin >> n >> m) {
  31.         //vector<int> comb (n);
  32.         priority_queue <int, vector<int>, greater<int> > Q;
  33.         //vector<bool> marca (n);
  34.         vector<int> mult (m);
  35.         for (int i = 0; i < m; ++i) {
  36.             //enters entre 2 i 1000
  37.             cin >> mult[i];
  38.         }
  39.         bool primer = true;
  40.         backtracking(n, 0, primer, mult, Q);
  41.         while (not Q.empty()) {
  42.             cout << Q.top() << endl;
  43.             Q.pop();
  44.         }
  45.         cout << "----------" << endl;
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement