鼻水が出る。
ABC192 : SOMPO HD プログラミングコンテスト2021(AtCoder Beginner Contest 192)
- A - Star
https://atcoder.jp/contests/abc192/tasks/abc192_a
- 提出: https://atcoder.jp/contests/abc192/submissions/47407592
100 - (x % 100)
- B - uNrEaDaBlE sTrInG
https://atcoder.jp/contests/abc192/tasks/abc192_b
- 提出: https://atcoder.jp/contests/abc192/submissions/47407631
- 先頭から指示通りに判定
- C - Kaprekar Number
https://atcoder.jp/contests/abc192/tasks/abc192_c
- 提出: https://atcoder.jp/contests/abc192/submissions/47407757
- 指示通りの関数をつくって A_0 から A_K まで試す
- D - Base n
https://atcoder.jp/contests/abc192/tasks/abc192_d
- 提出: https://atcoder.jp/contests/abc192/submissions/47409055
- 1 桁の場合の考慮を忘れて 2WA
- 1 桁の場合は n 進数を増やしても値は増加しない
- それ以外は単調増加なので n を二分探索する
- E - Train
https://atcoder.jp/contests/abc192/tasks/abc192_e
- 未着手
- F - Potion
https://atcoder.jp/contests/abc192/tasks/abc192_f
- 未着手
use proconio::{input, marker::Chars}; fn main() { input! { x: Chars, m: usize, }; let x = x .iter() .map(|&c| c.to_digit(10).unwrap() as usize) .collect::<Vec<usize>>(); let d = x.iter().max().unwrap(); fn f(x: &[usize], n: usize) -> Option<usize> { let mut v = 0_usize; for c in x.iter().copied() { v = v.checked_mul(n)?; v = v.checked_add(c)?; } Some(v) } if x.len() == 1 { if let Some(v) = f(&x, d + 1) { if v <= m { println!("1"); return; } } println!("0"); return; } if let Some(v) = f(&x, d + 1) { if v > m { println!("0"); return; } } else { println!("0"); return; } let mut ok = d + 1; let mut ng = 1 << 60; while ng - ok > 1 { let mid = ok + (ng - ok) / 2; if let Some(v) = f(&x, mid) { if v <= m { ok = mid; } else { ng = mid; } } else { ng = mid; } } let ans = ok - d; println!("{}", ans); }
今日のコミット。
- rust-atcoder 1 commit
- kireta 9 commits