zoukankan      html  css  js  c++  java
  • [ZOJ 2836] Number Puzzle

    Number Puzzle

    Time Limit: 2 Seconds      Memory Limit: 65536 KB

    Given a list of integers (A1, A2, ..., An), and a positive integer M, please find the number of positive integers that are not greater than M and dividable by any integer from the given list.

    Input

    The input contains several test cases.

    For each test case, there are two lines. The first line contains N (1 <= N <= 10) and M (1 <= M <= 200000000), and the second line contains A1, A2, ..., An(1 <= Ai <= 10, for i = 1, 2, ..., N).

    Output

    For each test case in the input, output the result in a single line.

    Sample Input

    3 2 2 3 7 3 6 2 3 7

    Sample Output

    1 4

    入门容斥原理,见代码

    #include <iostream>
    #include <cstdio>
    using namespace std;
    #define ll long long
    #define N 10
    
    int n,m;
    int a[N];
    int gcd(ll a,ll b){
        return b?gcd(b,a%b):a;
    }
    int lcm(ll a,ll b){
        return a/gcd(a,b)*b;
    }
    ////写法1/////
    int solve()
    {
        int res=0;
        for(int i=1;i<(1<<n);i++)
        {
            int cnt=0;
            ll LCM=1;
            for(int j=0;j<n;j++)
            {
                if(i&(1<<j)) cnt++,LCM=lcm(LCM,a[j]);
            }
            if(cnt&1) res+=m/LCM;
            else res-=m/LCM;
        }
        return res;
    }
    ////写法2/////
    int ans;
    void dfs(int pos,int LCM,int cnt)
    {
        if(cnt)
        {
            if(cnt&1) ans+=m/LCM;
            else ans-=m/LCM;
        }
        for(int i=pos+1;i<n;i++)
            dfs(i,lcm(LCM,a[i]),cnt+1);
    }
    int main()
    {
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            for(int i=0;i<n;i++) scanf("%d",&a[i]);
            //printf("%d
    ",solve());
            ans=0;
            dfs(-1,1,0);
            printf("%d
    ",ans);
        }
        return 0;
    }
    趁着还有梦想、将AC进行到底~~~by 452181625
  • 相关阅读:
    JDBC连接
    Ubuntu 16.04安装MySQL(5.7.18)
    AOP拦截日志报错llegalStateException: It is illegal to call this method if the current request is not in asynchronous mode
    mybatis笔记
    打扮IDEA更换主题
    简单的IDEA破解到2099年
    UML之时序图详解
    UML之类图详解
    UML之用例图详解
    spring和springboot常用注解总结
  • 原文地址:https://www.cnblogs.com/hate13/p/4482877.html
Copyright © 2011-2022 走看看