Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include<vector>
  2. #include<iostream>
  3. #include<cmath>
  4. #include<algorithm>
  5. using namespace std;
  6.  
  7.  
  8. int n, k;
  9.  
  10. int ans = 0;
  11. void f(int i, int p, int Count, vector<int>& div, vector<vector<bool> >& prime)
  12. {
  13.     if(Count == 0) ans++;
  14.     else
  15.     {
  16.         for(int j = i + 1; j < div.size(); ++j)
  17.         {
  18.  
  19.             if(prime[i][j] && p * div[j] <= n)
  20.             {
  21.                 f(j, p * div[j], Count - 1, div, prime);
  22.  
  23.  
  24.             }
  25.         }
  26.     }
  27. }
  28.  
  29. int gcd(int a, int b)
  30. {
  31.     if(b == 0) return a;
  32.     else return gcd(b, a % b);
  33. }
  34.  
  35.  
  36. int main()
  37. {
  38.  
  39.     cin >> n >> k;
  40.     vector<int> div;
  41.     int i = 1;
  42.     while(i * i <= n)
  43.     {
  44.         if(n % i == 0)
  45.         {
  46.             div.push_back(i);
  47.             if(i*i != n) div.push_back(n / i);
  48.         }
  49.         ++i;
  50.     }
  51.     sort(div.begin(), div.end());
  52.     vector<vector<bool> > prime(div.size(), vector<bool>(div.size()));
  53.     for(int i = 0; i < div.size(); ++i)
  54.     {
  55.         for(int j = 0; j < div.size(); ++j)
  56.         {
  57.  
  58.             if(gcd(div[i], div[j]) == 1)
  59.             {
  60.                 prime[i][j] = true;
  61.                 prime[j][i] = true;
  62.             }
  63.         }
  64.     }
  65.     for(int d = 0; d < div.size(); ++d)
  66.     {
  67.         f(d, div[d], k - 1, div, prime);
  68.     }
  69.  
  70.     cout << ans;
  71.  
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement