Advertisement
Guest User

Untitled

a guest
Dec 1st, 2011
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #include <vector>
  2. #include <list>
  3. #include <map>
  4. #include <set>
  5. #include <queue>
  6. #include <deque>
  7. #include <stack>
  8. #include <bitset>
  9. #include <algorithm>
  10. #include <functional>
  11. #include <numeric>
  12. #include <utility>
  13. #include <sstream>
  14. #include <iostream>
  15. #include <iomanip>
  16. #include <cstdio>
  17. #include <cmath>
  18. #include <cstdlib>
  19. #include <ctime>
  20. #include <cctype>
  21. #include <cstdio>
  22. #include <cstring>
  23. #include <iostream>
  24. using namespace std;
  25. #define mp make_pair
  26. typedef long long ll;
  27. typedef pair<ll,ll> ii;
  28. const ll MAX =(ll) 1e18;
  29. int k,n;
  30. ll num,leastPrime,p[1100];
  31. ii top;
  32.  
  33. int main(){
  34.     freopen("input.txt", "r", stdin);
  35.     freopen("output.txt", "w", stdout);
  36.  
  37.     cin>>k>>n;
  38.     priority_queue<ii,vector<ii>,greater<ii> > Q;
  39.  
  40.     for(int i=0;i<k;i++){
  41.         cin>>p[i];    
  42.         Q.push(mp(p[i],p[i])); 
  43.     }
  44.     sort(p,p+k);
  45.     for(int i=1;i<=n;i++){
  46.  
  47.         top=Q.top(); Q.pop();
  48.         num=top.first;             // очередное число
  49.         leastPrime=top.second;    //минимальное простое число которое делит num
  50.            
  51.         for (int j=0;j<k && p[j]<=leastPrime;j++)
  52.  
  53.             if(p[j]<= MAX / num)// если результат перемножения не превышает 10^18 то заносим в кучу
  54.                     Q.push(mp(num*p[j] ,p[j]));  
  55.                    
  56.             else break;
  57.     }
  58.     cout<<num;
  59.    
  60.     return 0;
  61.  
  62. }
  63.  
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement