use std::io; fn main() { let mut input = String::new(); io::stdin().read_line(&mut input) .expect("Read error"); let n: u64 = input.trim().parse().unwrap(); println!("{}", solve(n)); } fn solve(n: u64) -> u64 { let mut acc: u64 = 0; let mut n2 = n; loop { if n2 == 0 { break; } acc += n2; n2 /= 2; } 2*n - acc } #[test] fn it_works() { assert_eq!(2, solve(12)); assert_eq!(31, solve(123456789123456789)); }