Problem:
Score : 200 points

Problem Statement

Given is an integer N. Find the number of positive integers less than or equal to N that have an odd number of digits (in base ten without leading zeros).

Constraints

1 \leq N \leq 10^5

Input

Input is given from Standard Input in the following format:

N

Output

Print the number of positive integers less than or equal to N that have an odd number of digits.

Sample Input 1

11

Sample Output 1

9

Among the positive integers less than or equal to 11, nine integers have an odd number of digits: 1, 2, \ldots, 9.

Sample Input 2

136

Sample Output 2

46

In addition to 1, 2, \ldots, 9, another 37 integers also have an odd number of digits: 100, 101, \ldots, 136.

Sample Input 3

100000

Sample Output 3

90909

Solution in Rust (1.15.1) (judge verdict: Accepted)

use std::io::Read;
fn main() {
    let n= {
        let inputstr = {
            let mut inputstr = String::new();
            std::io::stdin().read_to_string(&mut inputstr).unwrap();
            inputstr
        };
        let mut inputiter = inputstr.split_whitespace();
        let n =  inputiter.next().unwrap().parse::<usize>().unwrap();
        n
    };
    let ans = {
        let keta = (n as f64).log10() as usize + 1;
        let amari = 
            if keta % 2 == 1 {
                n - (10 as f64).powi(keta as i32 -1) as usize + 1 
            }else{
                0
            };
        let sum:usize = 
            (1..keta)
            .filter(|x| x %2 ==1)
            .map(|x|(10 as f64).powi(x as i32) as usize - (10 as f64).powi(x as i32 -1) as usize)
            .sum();
        amari + sum
    };
    println!("{}",ans);
}