寒假自训日志 01.16
- 牛客数学题单:数学
题号:
1010
1030
知识点:
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,思维转不过来了(烦