結果
問題 | No.2767 Add to Divide |
ユーザー | あさくち |
提出日時 | 2024-06-01 15:52:40 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 11 ms / 2,000 ms |
コード長 | 931 bytes |
コンパイル時間 | 20,600 ms |
コンパイル使用メモリ | 378,300 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-22 01:54:28 |
合計ジャッジ時間 | 12,648 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 16 |
ソースコード
use proconio::input; #[proconio::fastout] fn main() { input! { t: usize, } for _ in 0..t { input! { a: usize, b: usize, } if let Some(result) = solve(a, b) { println!("{}", result); } else { println!("-1"); } } } fn solve(a: usize, b: usize) -> Option<usize> { if a == b { return Some(0); } let list = divisors(b - a); for divisor in list { if divisor >= a { return Some(divisor - a); } } None } fn divisors(n: usize) -> Vec<usize> { let mut list = Vec::new(); { let mut i = 1; while i * i <= n { if n % i == 0 { list.push(i); if n / i != i { list.push(n / i); } } i += 1; } } list.sort(); list }