• HDU1796 How many integers can you find 容斥定理


    红果果的容斥定理。

    代码如下:

    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    
    int ans, seq[15], N, flag;
    
    int M;
    
    inline int GCD(int a, int b)
    {
        int t;
        while (b) {
            t = a;
            a = b;
            b = t % b;
        }
        return a;
    }
    
    inline int LCM(int a, int b) 
    {
        return a / GCD(a, b) * b;
    }
    
    void dfs(int p, int num, int sign)
    {
        if (p > 0) {
            ans += sign * N / num;
        }
        for (int i = p + 1; i <= M; ++i) { 
            dfs(i, LCM(seq[i], num), -sign);
        }
    }
    
    int main()
    {
        int i, j;
        while (scanf("%d %d", &N, &M) == 2) {
            flag = 0;
            ans = 0; 
            for (i = 1, j = 1; i <= M; ++i, ++j) {
                scanf("%d", &seq[j]);
                if (seq[j] <= 0 || seq[j] >= N) {
                    --j;
                }
            }
            N -= 1;
            M = j - 1;
            dfs(0, 1, -1);
            printf("%d\n", ans);
        }    
        return 0;
    }
  • 相关阅读:
    centos中安装docker
    docker es
    Linux 定时备份数据库
    Linux 防火墙firewalld
    Linux Systemd
    Linux at定时任务
    Linux运行级别
    原来这就是网络
    LeetCode-897-递增顺序搜索树
    SSM整合配置文件
  • 原文地址:https://www.cnblogs.com/Lyush/p/2612834.html
Copyright © 2020-2023  润新知