1. 程式人生 > >codeforces 515B B. Drazil and His Happy Friends(模擬)

codeforces 515B B. Drazil and His Happy Friends(模擬)

題目連結:

題目大意:

給出一個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"); } }