結果
| 問題 |
No.442 和と積
|
| コンテスト | |
| ユーザー |
cra77756176
|
| 提出日時 | 2022-12-12 23:42:51 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 1,000 ms |
| コード長 | 664 bytes |
| コンパイル時間 | 22,814 ms |
| コンパイル使用メモリ | 392,552 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-11-06 21:21:03 |
| 合計ジャッジ時間 | 15,706 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 18 |
ソースコード
const fn gcd(a: u64, b: u64) -> u64 {
let mut x = (a, b);
while x.1 > 0 {
x = (x.1, x.0 % x.1);
}
x.0
}
fn main() {
let mut xx = String::new();
std::io::stdin().read_line(&mut xx).ok();
let xx: Vec<u64> = xx.split_whitespace().flat_map(str::parse).collect();
let a_plus_b = xx[0] + xx[1];
let mut a_times_b = 0;
let mut a_tmp = xx[0];
let mut b_tmp = xx[1];
while a_tmp > 0 {
if a_tmp & 1 == 1 {
a_times_b += b_tmp;
a_times_b %= a_plus_b;
}
b_tmp <<= 1;
b_tmp %= a_plus_b;
a_tmp >>= 1;
}
println!("{}", gcd(a_plus_b, a_times_b));
}
cra77756176