zoukankan      html  css  js  c++  java
  • ZOJ 2836

    求不比M大的可以被集合任一个数整除的数的个数。(容斥原理)

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    
    using namespace std;
    
    int set[15];
    int ans;
    
    int gcd(int a,int b){
    	if(b==0) return a;
    	return gcd(b,a%b);
    }
    
    void dfs(int i,int num,int p,int m,int n){
    	if(i>=n){
    		if(num==0)
    		ans=0;
    		else if(num&1)
    		ans+=(m/p);
    		else ans-=(m/p);
    		return;
    	}
    	dfs(i+1,num,p,m,n);
    	dfs(i+1,num+1,p/gcd(p,set[i])*set[i],m,n);
    }
    
    int main(){
    	int n,m;
    	while(scanf("%d%d",&n,&m)!=EOF){
    		for(int i=0;i<n;i++)
    		scanf("%d",&set[i]);
    		dfs(0,0,1,m,n);
    		printf("%d
    ",ans);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Jquery入门
    微服务
    数组
    流程控制
    GO的整型
    Go的巧记
    变量和常量
    Golang
    股票入市指南
    linux 命令行操作
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/4004145.html
Copyright © 2011-2022 走看看