两道题基本一样。
判断两个数是否互质即可。
设x为走的步数,m为间距,则需要判断 x * m % n 是否可以充满0到n - 1的闭区间。
互质的话,存在逆元,所以一定可以。
hdu 1222:
1 #include <iostream> 2 using namespace std; 3 4 int gcd( int a, int b ) 5 { 6 return b ? gcd( b, a % b ) : a; 7 } 8 9 int main() 10 { 11 int t; 12 cin >> t; 13 while ( t-- ) 14 { 15 int x, y; 16 cin >> x >> y; 17 cout << ( gcd( x, y ) != 1 ? "YES" : "NO" ) << endl; 18 } 19 return 0; 20 }
hdu 2104:
1 #include <iostream> 2 using namespace std; 3 4 int gcd( int x, int y ) 5 { 6 return y ? gcd( y, x % y ) : x; 7 } 8 9 int main() 10 { 11 int a, b; 12 while ( cin >> a >> b ) 13 { 14 if ( a == -1 && b == -1 ) break; 15 cout << ( gcd( a, b ) == 1 ? "YES" : "POOR Haha" ) << endl; 16 } 17 return 0; 18 }