题目链接:
题目大意:
给出一个n,m,代表男女的数量,第i天让i%n号男和i%m号女约会,如果他们其中有一个人是 开心的,那么另一个人也会变开心,问能否通过有限次约会让他们都开心。
题目分析:
直接模拟100000次,然后判断是否依旧存在不开心的人即可,因为存在循环节,懒得算循环节长度,所以直接100000了。。。反正不会超时。
AC代码:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#define MAX 107
using namespace std;
int n,m,b,g,u,v;
int x[MAX],y[MAX];
int gcd ( int a , int b )
{
return !b?a:gcd(b,a%b);
}
int main ( )
{
while ( ~scanf("%d%d" , &n , &m ) )
{
scanf ( "%d" , &b );
memset ( x , 0 , sizeof ( x ));
memset ( y , 0 , sizeof ( y ));
for ( int i = 0 ; i < b; i++ )
{
scanf ( "%d" , &u );
x[u] = 1;
}
scanf ( "%d" , &g );
for ( int i = 0 ; i < g; i++ )
{
scanf ( "%d" , &v );
y[v] = 1;
}
int lcm = 100000;
for ( int i = 0 ; i <= lcm ; i ++ )
{
int tx = i%n;
int ty = i%m;
if ( x[tx] || y[ty] )
x[tx] = y[ty] = 1;
}
bool flag = true;
for ( int i = 0 ; i < n ; i++ )
if ( !x[i] ) flag = false;
for ( int i = 0 ; i < m ; i++ )
if ( !y[i] ) flag = false;
if ( flag ) puts ( "Yes");
else puts ( "No");
}
}