Quipex

Untitled

Apr 15th, 2017
399
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <vector>
  5. #include <cmath>
  6. #include <cstring>
  7. #include <string>
  8. #include <iterator>
  9. #include <iomanip>
  10. using namespace std;
  11.  
  12. #define sqr(x) ((x)*(x))
  13. #define cbr(x) ((x)*(x)*(x))
  14. #define rep(c, i, n) for((i)=(c); (i)<(n); (i)++)
  15. struct pt { long long x, y; };
  16. double vecmul(pt a, pt b) { /*Векторное умножение А*В*/ return (a.x*b.y - b.x*a.y); } //скалярное умножение a*b = |a|*|b|*cos(a,b)
  17.  
  18. double dist(double ax, double ay, double bx, double by) { return sqrt(sqr(ax - bx) + sqr(ay - by)); }
  19.  
  20. //DBG
  21. template<typename T, typename T2>void printarr(T  a[], T2 sz, T2 beg = 0) { for (T2 i = beg; i<sz; i++) cout << a[i] << " "; cout << endl; }
  22. #define DBG(a)         cout<<#a<<"="<<(a)<<"\n"
  23. #define DBG2(a,b)       cout<<#a<<"="<<(a)<<", "<<#b<<"="<<(b)<<"\n"
  24. #define DBG3(a,b,c)     cout<<#a<<"="<<(a)<<", "<<#b<<"="<<(b)<<", "<<#c<<"="<<(c)<<"\n"
  25.  
  26. //Files
  27. #define FILE_MODE(FILE) freopen(FILE".in", "r", stdin), freopen(FILE".out", "w", stdout)
  28.  
  29. //Constants
  30. #define PI    3.1415926535897932
  31. #define INF   1011111111
  32. #define LLINF 1000111000111000111LL
  33. #define eps   1e-14
  34. #define mod   1000000007
  35. #define ll long long
  36. #define ull unsigned long long
  37. //-------------------------------------------------
  38. #define N 21
  39.  
  40. void dfs(int v);
  41. vector <int> path;
  42. vector <int> dividers;
  43. int n, k;
  44.  
  45.  
  46. int main() {
  47.     cin >> n >> k;
  48.     bool impossible = false;
  49.     if (k == 1) {
  50.         cout << n; return 0;
  51.     }
  52.     dfs(n);
  53.     if (path.size() == !k) { cout << -1; return 0; }
  54.     copy(path.begin(), path.end(), ostream_iterator<int>(cout, " "));
  55.     return 0;
  56. }
  57.  
  58. void dfs(int v) {
  59.     if (path.size() + 1 < k) {
  60.         if (v % 2 == 0 && path.size() != k && v / 2 != 1) {
  61.             path.push_back(2);
  62.             dfs(v / 2);
  63.         }
  64.         if (v % 3 == 0 && path.size() != k && v / 3 != 1) {
  65.             path.push_back(3);
  66.             dfs(v / 3);
  67.         }
  68.         if (v % 5 == 0 && path.size() != k && v / 5 != 1) {
  69.             path.push_back(5);
  70.             dfs(v / 5);
  71.         }
  72.         if (path.size() != k && path.size() != 0)
  73.             path.pop_back();
  74.     }
  75.     else {
  76.         path.push_back(v);
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment