题目描述
假设:
- 语文课每过
天考试一次;
- 数学课每过
天考试一次;
- 英语课每过
天考试一次。
又假设,在昨天,这三门课同时发生了考试。那么从今天开始算起,在接下来的 天时间里,有多少天是没有考试的呢?
输入格式
第一行:单个整数
第二行:三个整数 ,
和
。
输出格式
单个整数:表示没有考试的天数
数据范围
- 对于 50% 的数据,1≤
≤10000;
- 对于 100% 的数据,1≤
≤1,000,000,000;
- 1≤
,
,
≤1000。
样例数据
输入:
20
3 5 7
输出:
9
解析
本题是一道数学题,用容斥原理可解决
答案=天数-(a+b+c-d-e-f+g);
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll gcd(ll x,ll y) {
if(y==0)return x;
return gcd(y,x % y);
}
int main() {
ll n,a,b,c;
cin>>n>>a>>b>>c;
ll d=a*b/gcd(a, b);
ll e=b*c/gcd(b, c);
ll f=c*a/gcd(c, a);
ll g=d*c/gcd(d, c);
cout<<n-(n/a+n/b+n/c)+(n/d+n/f+n/e)-n/g;
return 0;
}