use anmitsu::number_theory::gcd; use proconio::{fastout, input}; pub mod anmitsu { pub mod number_theory { /// Returns: /// gcd(a, b) /// /// Note: /// gcd(0, 0) = 0 /// gcd(a, 0) = a /// gcd(a, b) >= 0 /// gcd(a, a) == abs(a) /// gcd(a, b) == gcd(b, a) /// /// Complexity: /// O(log(min(abs(a), abs(b)))) /// /// Exsamples: /// ``` /// use anmitsu::math::number_theory::gcd; /// assert_eq!(gcd(0, 0), 0); /// assert_eq!(gcd(0, 1), 1); /// assert_eq!(gcd(4, 6), 2); /// assert_eq!(gcd(4, -6), 2); /// assert_eq!(gcd(-4, 6), 2); /// assert_eq!(gcd(-4, -6), 2); /// assert_eq!(gcd(2, 2), 2); /// assert_eq!(gcd(-2, -2), 2); /// ``` pub fn gcd(mut a: i64, mut b: i64) -> u64 { while b != 0 { (a, b) = (b, a % b); } a.unsigned_abs() } } } #[fastout] fn main() { input! { a: usize, b: usize, t: [usize; a], s: [usize; b], } let mut g = t[0]; for i in 1..a { g = gcd(g as i64, t[i] as i64) as usize; } if s.iter().cloned().any(|x| x % g != 0) { println!("No"); } else { println!("Yes"); } }