这题分两种情况:
1.如果存在两个区间重叠,一定满足条件。
2.如果不存在两个区间重叠,那么id%x1=a,id%x2=b,a,b分别在[y1,z1],和[y2,z2]这两个区间内。
id=x1*s+a=x2*t+b;
x1*s+x2*t=a-b;
所以只要判断这个方程有解即可。
gcd(x1,x2)=x1*s+x2*t;
只要(a-b)%gcd(x1,x2)==0即可,求出(a-b)的范围,问题就等价于gcd(x1,x2)或者gcd(x1,x2)的倍数在范围内即可。
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#define maxn 1005
using namespace std;
int n;
inline int rd(int &x)
{
c......
阅读全文