結果
| 問題 | No.3658 Darumaka Number 2 |
| コンテスト | |
| ユーザー |
manabeai
|
| 提出日時 | 2026-08-30 15:17:52 |
| 言語 | Rust (1.97.1 + proconio + num + itertools) |
| 結果 |
AC
|
| 実行時間 | 4 ms / 2,000 ms |
| + 400µs | |
| コード長 | 1,885 bytes |
| 記録 | |
| コンパイル時間 | 7,716 ms |
| コンパイル使用メモリ | 184,496 KB |
| 実行使用メモリ | 6,272 KB |
| 最終ジャッジ日時 | 2026-08-30 15:18:21 |
| 合計ジャッジ時間 | 3,680 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 45 |
ソースコード
#![allow(
non_snake_case,
unused_variables,
unused_assignments,
unused_mut,
unused_imports,
unused_macros,
dead_code,
static_mut_refs
)]
// use ac_library::*;
// use ascii::AsciiChar::N;
use itertools::Itertools;
use proconio::{derive_readable, input, marker::*};
// use rustc_hash::*;
use std::{cmp::*, collections::*, fmt::*, hash::*, marker::PhantomData, ops::*, println};
fn main() {
input! {
mut S: Chars,
}
let mut ans = Vec::new();
if S.len() == 1 && S[0] == '4' {
println!("{}", '4');
return;
}
// 最初が4未満なら確定
if S[0].to_digit(10).unwrap() < 4 {
println!("{}", "5".repeat(S.len() - 1));
return;
}
const INF: usize = 3_000_000_000_000_000_000;
let mut mode = false;
let mut lsfiv = INF;
for i in 0..S.len() {
if S[i].to_digit(10).unwrap() > 5 || mode {
ans.push('5');
mode = true;
lsfiv = i;
} else if S[i].to_digit(10).unwrap() < 4 {
if lsfiv != INF {
ans[lsfiv] = '4';
// dbg!(&)
for j in (lsfiv + 1)..i {
ans[j] = '5';
}
ans.push('5');
mode = true;
} else {
println!("{}", "5".repeat(S.len() - 1));
return;
}
} else if S[i] == '5' {
ans.push('5');
lsfiv=i;
} else {
assert!(S[i]=='4');
ans.push('4');
}
}
for a in ans {
print!("{}",a);
}
println!();
}
trait Pipe: Sized {
fn pipe<F, T>(self, f: F) -> T
where
F: FnOnce(Self) -> T,
{
f(self)
}
}
impl<T> Pipe for T {}
fn yesno(b: bool) {
if b {
println!("Yes");
} else {
println!("No");
}
}
manabeai