zoukankan      html  css  js  c++  java
  • nyoj993——容斥

    How many integers can you find

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:1
     
    描述

    给你三个数,n,m1,m2,找出所有小于n的能被m1或m2整除的数的个数。

     
    输入
    输入包含多组测试数据,每组数据占一行。
    0<n<2^31,0<m1,m2<=10。
    输出
    每组数据输出占一行。
    样例输入
    12 2 3
    样例输出
    7
    来源
    爱生活
    上传者
    TCM_张鹏
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long  ll;
    const int INF = 0x3f3f3f3f;
    const int maxn = 2000;
    const int moder = 1000000007;
    
    int gcd(int a,int b)
    {
        if(b == 0) return a;
        return gcd(b,a%b);
    }
    
    
    int main()
    {
        int n,m1,m2;
        while(~scanf("%d%d%d",&n,&m1,&m2)){
            int m3 = m1*m2/gcd(m1,m2);
            int a,b,c;
            if(n%m1 == 0)
                a = n/m1-1;
            else
                a = n/m1;
            if(n%m2 == 0)
                b = n/m2-1;
            else
                b = n/m2;
            if(n%m3 == 0)
                c = n/m3-1;
            else
                c = n/m3;
            printf("%d
    ",a+b-c);
        }
        return 0;
    }

    ——注意的是,题目中说的是小于n,没有等于,容斥公式是把最后一个算进去的,所以要减一,细节要注意,wa了一发。

  • 相关阅读:
    import()函数
    node-sass安装报错
    npm 安装扩展模块时,因缓存报错的问题汇总
    测试
    export default 和 export 区别
    正则
    物联网
    第十二次课堂总结
    第十二次作业
    作业10
  • 原文地址:https://www.cnblogs.com/cunyusup/p/8490943.html
Copyright © 2011-2022 走看看