2672: 休息日.
include <bits/stdc++.h>
using namespace std;
long long t, a, b, c;
long long sum;
long long lcm(long long a,long long b)
{
return a*b/__gcd(a,b);
}
int main()
{
cin >> t >> a>> b >> c;
long long ab=lcm(a, b);
long long ac=lcm(a, c);
long long bc=lcm(b, c);
long long abc=lcm(ab, c);
sum=t/a+t/b+t/c-t/ab-t/ac-t/bc+t/abc;
cout << t-sum;
}
反思:要运用好最小公倍数和最大公约数的运用,这道题只用一层循环就可以了,x和y都要用long long,for(long long i = 1; i * i <= x * y; i++),然后第15行,if的判断条件还少一个gcd(i, j) == x,注意看式子列的有没有问题