https://www.acmicpc.net/problem/2869
문제 설명
하루에 A만큼 올라가고 B만큼 내려가므로 하루에 (A-B)만큼 이동합니다.
그러나 항상 그렇지는 않고 마지막 날에는 -B만큼 갈 필요가 없습니다.
그러므로 이 문제는 $A+t(A-B) \geq V$가 되는 첫 시점 t를 구하는 문제입니다.
식을 이항하면 $t(A-B) \geq V-A$가 되고, 그런 t를 찾으려면 $V-A \over A-B$를 올림하면 됩니다.
마지막 날 A만큼 이동했다고 가정했으므로 t에 1을 더해주면 정답이 됩니다.
소스 코드 / Rust
use std::io;
fn main() {
let mut input_string = String::new();
io::stdin().read_line(&mut input_string).unwrap();
input_string = String::from(input_string.trim());
let tokens: Vec<&str> = input_string.split_whitespace().collect();
let a : i32 = tokens[0].parse().unwrap();
let b : i32 = tokens[1].parse().unwrap();
let mut v : i32 = tokens[2].parse().unwrap();
v -= a;
let flag : i32;
if v == 0 {flag = 0;}
else {flag = 1;}
println!("{}", 1+(v-1)/(a-b)+flag);
}
'Algorithm > ANA 위클리 백준' 카테고리의 다른 글
[위클리 백준] 2024 5회 (2) - 18311 (0) | 2024.04.15 |
---|---|
[위클리 백준] 2024 5회 (1) - 2476 (0) | 2024.04.15 |
[위클리 백준] 2024 4회 (1) - 23037 (0) | 2024.04.02 |
[위클리 백준] 2024 3회 - 9086 (0) | 2024.04.02 |
[위클리 백준] 2024 2회 - 2753 (1) | 2024.03.18 |