fork(1) download
  1. #include <bits/stdc++.h>
  2. #define ll long long int
  3. #define pb push_back
  4.  
  5. using namespace std;
  6.  
  7. vector<ll> vec;
  8.  
  9. inline ll solve(ll step,ll prod,ll n,ll k)
  10. {
  11.  
  12. if(step>(n-1))
  13. {
  14. if(prod<=k)
  15. return 1;
  16. else
  17. return 0;
  18. }
  19.  
  20.  
  21.  
  22. ll p=k/vec[step];
  23.  
  24. if(prod>p)
  25. return 1;
  26.  
  27. return (solve(step+1,prod*vec[step],n,k)+solve(step+1,prod,n,k));
  28. }
  29.  
  30. int main()
  31. {
  32. ll n,k,i,p,c=0,ans,pr,tot;
  33.  
  34. cin>>n>>k;
  35.  
  36.  
  37. for(i=0;i<n;i++)
  38. {
  39. scanf("%lld",&p);
  40. if(p>k)
  41. continue;
  42.  
  43. if(p==1)
  44. c++;
  45. else
  46. vec.pb(p);
  47. }
  48.  
  49. sort(vec.begin(),vec.end());
  50.  
  51. tot=1<<c;
  52. tot--;
  53.  
  54. // reverse(vec.begin(),vec.end());
  55.  
  56. n=vec.size();
  57. ans=solve(0,1,n,k)-1;
  58.  
  59. pr=ans*tot;
  60.  
  61. ans+=pr;
  62. ans+=tot;
  63.  
  64.  
  65. cout<<ans;
  66.  
  67. return 0;
  68. }
  69.  
Time limit exceeded #stdin #stdout 5s 15232KB
stdin
30 1000000000000000000
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
stdout
Standard output is empty