hdu 1573 X问题(中国剩余定理应用)
题解:
求出除数a[0]……a[m-1]的最小公倍数gcd;
由中国剩余定理在【1,gcd】中存在且仅有一个x满足;
#include<stdio.h> #include<string.h> int a[11],b[11]; int gcd(int a,int b) { if(b==0)return a; return gcd(b,a%b); } int main() { int _case; int n,m,i,j,k; scanf("%d",&_case); while(_case--) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); scanf("%d %d",&n,&m); for(i=0;i<m;i++) scanf("%d",&a[i]); for(i=0;i<m;i++) scanf("%d",&b[i]); int tmp=1; long long ans=1; for(i=0;i<m;i++) { tmp=gcd(ans,a[i]); ans=ans*a[i]/tmp; } k=0; for(i=1;i<=ans&&i<=n;i++) { for(j=0;j<m;j++) { if(i%a[j]!=b[j])break; } if(j==m) { k=i; break; } } if(k==0)printf("%d\n",k); else { int yu=n%ans; if(yu>=k)k=n/ans+1; else k=n/ans; printf("%d\n",k); } } return 0; }