题意:在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; }