您的位置:首页 > 其它

zoj_2836 Number Puzzle

2013-06-01 14:56 357 查看
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1836

 

//C++代码
#include<iostream>
using namespace std;

int n,m,ans,a[11];

int gcd(int a,int b){
return b==0? a:gcd(b,a%b);
}

int lcm(int a,int b){
return a/gcd(a,b)*b;
}

void dfs(int x,int k,int tot){
if(x>0) ans+=k*m/tot;
for(int i=x;i<n;i++) dfs(i+1,-k,lcm(a[i],tot));
}

int main(){
while(cin>>n>>m){
for(int i=0;i<n;i++) cin>>a[i];
ans=0;
dfs(0,-1,1);
cout<<ans<<endl;
}
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  组合数学 DFS