解题思路:
使用暴力算法可以过哎!
K%a1=b1 (1);
K的取值是在b的基础上不断累加a1;
K%a2=b2 (2);
K的取值是在b的基础上累加a2.
要求出满足(1)式和(2)式的K,对每个满足(1)式的K判断是否也满足(2)式,如果不满足,则加a1,直到满足(2)式为止。
若引入K%a3=b3 (3),则在上面所得K的基础上,累加a1和a2的最小公倍数(由于a1和a2是质数,因此它的最小公倍数为a1*a2),直到得到的K满足(3)式,以此类推......
源码附上:
#include <iostream>
using namespace std;
struct node
{
int p,q;
}A[10];
int main()
{
int N;
cin>>N;
int i,mul=1;
long long ans=0;
for(i=0;i<N;i++)
cin>>A[i].p>>A[i].q;
ans=A[0].q;
for(i=0;i<N-1;i++)
{
mul=mul*A[i].p;
while(ans%A[i+1].p!=A[i+1].q)
{
ans+=mul;
}
}
cout<<ans<<endl;
return 0;
}