//
// main.cpp
// Richard
//
// Created by 邵金杰 on 16/8/1.
// Copyright © 2016年 邵金杰. All rights reserved.
//
#include<iostream>
using namespace std;
void gcd(int a,int b,int &d,int &x,int &y)
{
if(!b) {d=a;x=1;y=0;}
else {gcd(b,a%b,d,y,x);y-=x*(a/b);}
}
int main()
{
int k;
int a[10],b[10];
cin>>k;
while(k--)
{
int m,n,d,x,y;
bool fail=false;
cin>>m>>n;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++) cin>>b[i];
int a1,b1,a2,b2;
a1=a[0],b1=b[0];
for(int i=1;i<n;i++)
{
a2=a[i],b2=b[i];
gcd(a1,a2,d,x,y);
if((b2-b1)%d) {fail=true;;break;}
int ans=x*(b2-b1)/d;
int s=a2/d;
ans=(ans%s+s)%s;
b1=ans*a1+b1;
a1=a1*a2/d;
}
if(fail||m<b1) printf("0\n");
else {
int cnt=0;
if(b1==0) cnt--;//AC关键,题目中给出X为正整数,所以X为0的情况不可取
while(b1<=m) {cnt++;b1+=a1;}
printf("%d\n",cnt);
}
}
return 0;
}
HDU 1573 X问题
最新推荐文章于 2017-10-29 16:00:14 发布