Files
CodeTest/baekjoon/진법_변환/solution_23775902.rs
2024-08-29 16:22:09 +09:00

44 lines
1.0 KiB
Rust

macro_rules! parse_line {
($($t: ty),+) => ({
let mut line = String::new();
std::io::stdin().read_line(&mut line).unwrap();
let mut iter = line.split_whitespace();
($(iter.next().unwrap().parse::<$t>().unwrap()),+)
})
}
fn main() {
let (x, b): (i64, i64) = parse_line!(i64, i64);
if b > 0 {
if x >= 0 {
println!("{}", transform(x, b, 1));
} else {
println!("-{}", transform(-x, b, 1));
}
} else {
println!("{}", transform(x, -b, -1));
}
}
fn transform(x: i64, b: i64, b_sign: i64) -> String {
if x == 0 {
return format!("0").to_string();
}
let mut temp: i64 = x;
let mut res = String::new();
while temp != 0 {
let q: i64 = {
if temp % b == 0 || temp > 0 {
temp / b
} else {
temp / b - 1
}
};
let rem: i64 = temp - q * b;
res = format!("{}{}", rem, res).to_string();
temp = q * b_sign;
}
return res;
}