Drazil有很多朋友,他们中有些人是快乐的,有些人是不快乐的。 Drazil想让他的朋友变得快乐。于是,他发明了以下的计划。
在他的朋友中,有n个男孩和m个女孩。我们把男孩从0到n-1编号,女孩从0到m-1编号。在第i天,Drazil邀请第i mod
n个男孩和第i mod m个女孩一起吃饭(注意i从0开始)。如果两个人之中有一个是快乐的,那么另外一个也会变得快乐,否则,这两个人的心情状态不会改变。一个人一旦成为快乐的人(或者他原本就是快乐的),他能保持永远快乐。
Drazil想知道他是否可以使用该计划,使得他所有的朋友都变得快乐。
Input
第一行包含两个整数n和m(1≤n,m≤100)。
第二行包含整数b(0≤b≤n),表示Drazil的男生朋友中目前是快乐男生的数量,然后有b个不同的整数X1,X2,...,Xb(0≤Xi<n),表示这些快乐男生的编号。
第三行包含整数g(0≤g≤m),表示Drazil的女生朋友中目前是快乐女生的数量,然后有g个不同的整数Y1,Y2,...,Yg(0≤Yj<m),表示这些快乐女生的编号。
题目保证输入数据中至少有一个人不快乐。
Output
如果 Drazil能使得所有的朋友都变得快乐,就输出Yes,否则输出No
Sample Input
输入样例1:
2 3
0
1 0
输入样例2:
2 4
1 0
1 2
输入样例3:
2 3
1 0
1 1
输出样例1:
Yes
输出样例2:
No
输出样例3:
Yes
#include<stdio.h>
int max(int x,int y)
{
return x>y?x:y;
}
int main()
{
int n,m,b,g,i,x,y,mx;
while(scanf("%d %d",&n,&m)!=EOF)
{
mx = max(n,m);
int flg = 1;
int nn[100]={0},mm[100]={0};
scanf("%d",&b);
for (i=0;i<b;i++)
{
scanf("%d",&x);
nn[x] = 1;
}
scanf("%d",&g);
for (i=0;i<g;i++)
{
scanf("%d",&y);
mm[y] = 1;
}
for (i=0;i<mx*mx;i++)
{
if (nn[i%n]==1)
mm[i%m]=1;
if (mm[i%m]==1)
nn[i%n]=1;
}
for (i=0;i<n;i++)
if (nn[i]==0)
flg = 0;
for (i=0;i<m;i++)
if (mm[i]==0)
flg = 0;
if (flg)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}