E - Happy Friends CodeForces - 515B


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
Sample Output
输出样例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;
}


猜你喜欢

转载自blog.csdn.net/qq_40912854/article/details/80866010