1 条题解
-
0
C++ :
#include<bits/stdc++.h> using namespace std; // 辗转相除求最大公约数 int gcd(int a, int b) { while (a % b != 0) { int t = a % b; a = b; b = t; } return b; } // 求最小公倍数 long long lcm(int a, int b) { return (long long)a * b / gcd(a, b); } int main() { // 容斥原理 int a, b, c, t; cin >> t >> a >> b >> c; int x = lcm(a, b); // a、b 的公倍数 int y = lcm(a, c); // a、c 的公倍数 int z = lcm(b, c); // b、c 的公倍数 int s = lcm(x, c); // a、b、c 的公倍数 // 天数: a 的天数 + b 的天数 + c 的天数 - (a、b 的公倍数 + a、c 的公倍数 + b、c 的公倍数) + a、b、c 的公倍数 cout << t - (t / a + t / b + t / c) + (t / x + t / y + t / z) - t / s; return 0; }
信息
- ID
- 1024
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 2
- 上传者