帮我解析一下这道题:(幸运数字)云云有n个幸运数字a[0],a[1]……,a[n-1]。此外,它定义正整数x是厄运的,当且仅当它不是任何一个幸运数字的倍数。 他想知道有多少个小于等于k的正整数是厄运的。 输入第一行给定幸运数字的个数n(1<=n<=20)和上界k(0<=k<=1000000000)。 第二行有n个数,即幸运数字a[0],a[1],……,an-1。 输出合法正整数的个数。 试补全下面程序。
#include<iostream>
using namespace std;
int n,k,a[20];
long long ans;
int get(int x,int y){
return !x?y:__1__;
}
void dfs(int i,int s,int prod){
if(i==n){
ans+=__2__;
return;
}
dfs(i+1,s,prod);
if(k/prod>=a[i]/get(prod,a[i]))
dfs(i+1,__3__,__4__);
}
int main(){
cin>>n>>k;
for(int i=0;i<n;i++)
cin>>a[i];
dfs(0,__5__,1);
cout<<ans<<endl;
return 0;
}