結果

問題 No.2811 Calculation Within Sequence
ユーザー sakikuroe
提出日時 2024-07-19 21:27:21
言語 Rust
(1.83.0 + proconio)
結果
WA  
実行時間 -
コード長 3,308 bytes
コンパイル時間 15,208 ms
コンパイル使用メモリ 378,192 KB
実行使用メモリ 9,344 KB
最終ジャッジ日時 2024-07-19 21:27:55
合計ジャッジ時間 19,475 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 37 WA * 4
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

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()
}
/// Returns:
/// (x, y): (i64, i64)
/// s.t.
/// - gcd(a, b) = a * x + b * y
/// - max(abs(x), abs(y)) <= max(abs(a), abs(b))
///
/// Complexity:
/// O(log(min(abs(a), abs(b))))
///
/// References:
/// - [ - Q](https://qnighy.hatenablog.com/entry/20091230/1262173513)
///
/// Exsamples:
/// ```
/// use anmitsu::math::number_theory::extended_gcd;
///
/// // gcd(10, 4) = 2 = 10 * 1 + 4 * (-2)
/// assert_eq!(extended_gcd(10, 4), (1, -2));
///
/// // gcd(0, 4) = 4 = 0 * 0 + 4 * 1
/// assert_eq!(extended_gcd(0, 4), (0, 1));
///
/// // gcd(0, 0) = 0 = 0 * 0 + 0 * 0
/// assert_eq!(extended_gcd(0, 0), (0, 0));
///
/// // gcd(-12, 7) = 1 = -12 * (-3) + 7 * (-5)
/// assert_eq!(extended_gcd(-12, 7), (-3, -5));
/// ```
pub fn extended_gcd(a: i64, b: i64) -> (i64, i64) {
if a == 0 && b == 0 {
return (0, 0);
} else if a == 0 {
return (0, if b >= 0 { 1 } else { -1 });
} else if b == 0 {
return (if a >= 0 { 1 } else { -1 }, 0);
}
let (mut xs, mut ys, mut s) = (1, 0, a);
let (mut xt, mut yt, mut t) = (0, 1, b);
while s % t != 0 {
let q = s / t;
let (u, xu, yu) = (s - q * t, xs - q * xt, ys - q * yt);
(xs, ys, xt, yt) = (xt, yt, xu, yu);
(s, t) = (t, u);
}
if t < 0 {
(-xt, -yt)
} else {
(xt, yt)
}
}
}
}
#[fastout]
fn main() {
input! {
a: usize, b: usize,
t: [usize; a],
s: [usize; b],
}
if a < b && (a..b).any(|i| s[i] != 0) {
println!("No");
return;
}
let mut g = t[0];
for i in 1..a {
g = gcd(g as i64, t[i] as i64) as usize;
}
if (0..a).any(|i| t[i].abs_diff(*s.get(i).unwrap_or(&0)) % g != 0) {
println!("No");
} else {
println!("Yes");
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0