• CF 148A Insomnia cure


    题目链接:传送门

    题目大意:就是给四个数,和一个d,问1-d中有多少个数字不是那四个数的倍数;

    这道题的d数据很小直接暴力可以过;

    暴力代码:时间复杂度O(1);

    #include<stdio.h>
    int main(){
        int k,m,n,d,l;
        scanf("%d%d%d%d%d",&k,&l,&m,&n,&d);
        int ans=0;
        for(int i=1;i<=d;i++)
            if(i%k==0 || i%l==0 || i%n==0 || i%m==0)
                ans++;
        printf("%d
    ",ans);
    }
    View Code

    还可以根据容斥定理做,不过时间复杂度要大一点,不过毕竟只有4个数,这种方法也适用于d比较大的情况。所以学一学并没有坏处

    #include<stdio.h>
    int gcd(int x,int y){
        if(x==0)
            return y;
        gcd(y%x,x);
    }
    int lcm(int x,int y){
        return y*x/gcd(x,y);
    }
    int main(){
        int a[4],d;
        int ans=0;
        scanf("%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&d);
        for(int i=0;i<4;i++){
            ans+=d/a[i];
            for(int j=i+1;j<4;j++){
                ans-=d/lcm(a[i],a[j]);
                for(int q=j+1;q<4;q++){
                    ans+=d/lcm(lcm(a[i],a[j]),a[q]);
                    for(int p=q+1;p<4;p++)
                        ans-=d/lcm(lcm(lcm(a[i],a[j]),a[q]),a[p]);
                }
            }
        }
        printf("%d
    ",ans);
    }
    View Code
  • 相关阅读:
    2019 SDN阅读作业
    第02组 Alpha冲刺(2/6)
    2019 SDN上机第3次作业
    第02组 Alpha冲刺(1/6)
    2019 SDN上机第2次作业
    bzoj 3207 可持久化线段树
    bzoj 3524 可持久化线段树
    HDU 4757 可持久化trie树
    bzoj 3197 DP
    poj 2104 可持久化线段树
  • 原文地址:https://www.cnblogs.com/OMG-By/p/5752303.html
Copyright © 2020-2023  润新知