其他分享
首页 > 其他分享> > 寒假自训日志 01.16

寒假自训日志 01.16

作者:互联网

寒假自训日志 01.16

知识点:

lcm

lcm(a,b) = a * b / __gcd(a,b);

容斥原理与鸽巢原理

问:n以内有多少个数是a的倍数或是b的倍数

解:n / a + n / b - n / lcm(a , b);

问:n以内有多少个数是a的倍数或是b的倍数或是c的倍数或是d的倍数
解:
		int a = ;
        int b = ;
        int c = ;
        int d = ;
        int ab = lcm(a, b);
        int ac = lcm(a, c);
        int ad = lcm(a, d);
        int bc = lcm(b, c);
        int bd = lcm(b, d);
        int cd = lcm(c, d);
        int abc = lcm(ab, c);
        int abd = lcm(ab, d);
        int acd = lcm(ac, d);
        int bcd = lcm(bc, d);
        int abcd = lcm(ab, cd);
        // cout << abc << endl;
        // cout << abd << endl;
        // cout << acd << endl;
        // cout << bcd << endl;
        // cout << abcd << endl;
        // cout << cd << endl;

        int ans = n / a + n / b + n / c + n / d - n / ab - n / ac - n / ad - n / bc - n / bd - n / cd + n / abc + n / abd + n / acd + n / bcd - n / abcd;
        注意计算的正负号转变

早上去处理事情少了很多刷题时间
有一说一题目刷题挺随意的,因为之前数学功底太差了,所以一直刷牛客的数学题单

感觉最近没怎么刷cf,思维转不过来了(烦

标签:ac,ab,01.16,int,或是,自训,倍数,日志,lcm
来源: https://blog.csdn.net/cannothit/article/details/122537109