题意:在1 到n中求有多少个x满足 x%a【i】=b【i】。
令任意固定整数为M,当M/A余a,M/B余b,M/C余c,M/D余d,…,M/Z余z时,这里的A,B,C,D,…,Z为除数,除数为任意自然数([span]如果为0,没有任何意义,如果为1,在孙子定理中没有计算和探讨的价值,所以,不包括0和1)时;余数a,b,c,d,z为自然整数时。
1、当命题正确时,在这些除数的最小公倍数内有解,有唯一的解,每一个最小公倍数内都有唯一的解;当命题错误时,在整个自然数范围内都无解
#include<cstdio>
#include<cstring>
int a[11],b[11];
int gcd(int x,int y)
{
return y?gcd(y,x%y):x;
}
int main()
{
int ncase,i,n,m,j;
scanf("%d",&ncase);
while(ncase--)
{
scanf("%d%d",&n,&m);
long long ans=1;
for(i=1;i<=m;i++)
{
scanf("%d",&a[i]);
ans=(ans*a[i])/gcd(ans,a[i]);
}
for(i=1;i<=m;i++)
scanf("%d",&b[i]);
int k=0,num;
for(i=1;i<=ans&&i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(i%a[j]!=b[j])
break;
}
if(j==m+1) { k=i;break;}
}
if(k==0) {printf("%d\n",k);continue;}
int tmp=n%ans;
num=n/ans;
if(k<=tmp) num++;
printf("%d\n",num);
}
return 0;
}