結果
| 問題 |
No.2526 Kth Not-divisible Number
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-11-03 21:47:18 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 261 ms / 2,000 ms |
| コード長 | 2,996 bytes |
| コンパイル時間 | 13,354 ms |
| コンパイル使用メモリ | 378,976 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-09-25 19:55:42 |
| 合計ジャッジ時間 | 16,355 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 11 |
コンパイルメッセージ
warning: unnecessary parentheses around `while` condition
--> src/main.rs:42:11
|
42 | while (l + 1 < r) {
| ^ ^
|
= note: `#[warn(unused_parens)]` on by default
help: remove these parentheses
|
42 - while (l + 1 < r) {
42 + while l + 1 < r {
|
ソースコード
#![allow(unused_imports)]
#![allow(unused_macros)]
#![allow(dead_code)]
#![allow(non_snake_case)]
pub use __cargo_equip::prelude::*;
use kyopro_io::get;
use std::io::{StdoutLock, Write};
const JU_5: usize = 100_000;
const JU_9: usize = JU_5 * 10_000;
const JU_18: usize = JU_9 * JU_9;
const INF: usize = JU_9 + 100_100;
const INFL: usize = JU_18 * 2;
const MULTIPLE_TEST_CASE: bool = true;
fn gcd(a: usize, b: usize) -> usize {
if a > b {
return gcd(b, a);
}
if a == 0 {
return b;
}
gcd(b % a, a)
}
fn lcm(a: usize, b: usize) -> usize {
let g = gcd(a, b);
(a / g) * (b / g) * g
}
fn _main(writer: &mut std::io::BufWriter<StdoutLock>) {
let (a, b, k) = get!(usize, usize, usize);
let L = lcm(a, b);
let mut l = 0;
let mut r = INFL*2;
let _f = |m: usize| {
let x = m / a + m / b - m / L;
return (m - x) < k;
};
while (l + 1 < r) {
let m = (l + r) / 2;
if _f(m) {
l = m;
} else {
r = m;
}
}
writeln!(writer, "{}", r).unwrap();
}
// writeln!(writer, "{}", ans).unwrap();
fn main() {
let t = if MULTIPLE_TEST_CASE { get!(usize) } else { 1 };
let stdout = std::io::stdout();
let mut writer = std::io::BufWriter::new(stdout.lock());
for _ in 0..t {
_main(&mut writer);
}
}
// The following code was expanded by `cargo-equip`.
/// # Bundled libraries
///
/// - `kyopro-io 0.1.0 (path+████████████████████████████████████████████████)` published in **missing** licensed under `CC0-1.0` as `crate::__cargo_equip::crates::kyopro_io`
#[cfg_attr(any(), rustfmt::skip)]
#[allow(unused)]
mod __cargo_equip {
pub(crate) mod crates {
pub mod kyopro_io {pub use crate::__cargo_equip::macros::kyopro_io::*;#[macro_export]macro_rules!__cargo_equip_macro_def_kyopro_io_get{($t:ty)=>{{let mut line:String=String::new();std::io::stdin().read_line(&mut line).unwrap();line.trim().parse::<$t>().unwrap()}};($($t:ty),*)=>{{let mut line:String=String::new();std::io::stdin().read_line(&mut line).unwrap();let mut iter=line.split_whitespace();($(iter.next().unwrap().parse::<$t>().unwrap(),)*)}};($t:ty;$n:expr)=>{(0..$n).map(|_|get!($t)).collect::<Vec<_>>()};($($t:ty),*;$n:expr)=>{(0..$n).map(|_|get!($($t),*)).collect::<Vec<_>>()};($t:ty;;)=>{{let mut line:String=String::new();std::io::stdin().read_line(&mut line).unwrap();line.split_whitespace().map(|t|t.parse::<$t>().unwrap()).collect::<Vec<_>>()}};($t:ty;;$n:expr)=>{(0..$n).map(|_|get!($t;;)).collect::<Vec<_>>()};}macro_rules!get{($($tt:tt)*)=>(crate::__cargo_equip_macro_def_kyopro_io_get!{$($tt)*})}}
}
pub(crate) mod macros {
pub mod kyopro_io {pub use crate::__cargo_equip_macro_def_kyopro_io_get as get;}
}
pub(crate) mod prelude {pub use crate::__cargo_equip::crates::*;}
mod preludes {
pub mod kyopro_io {}
}
}