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 C# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using System.Linq;

namespace atcoder
{
    class Program
    {
        static void Main(string[] args)
        {
            ABC136.UnevenNumbers();
        }
    }

    class ABC136
    {

        public static void UnevenNumbers()
        {
            int n = Input.getInt();
            int cnt = 0;
            if(n<10) cnt = n%10;
            if(10<= n && n < 100)
            {                
                cnt = 9;
            }
            if(100<= n && n <1000)
            {
                cnt = n- 99 + 9;
            } 
            if(1000<= n && n<10000)
            {
                cnt = 999 - 99 + 9;
            }
            if(10000<=n && n<100000)
            {
                cnt = n - 9999 + 999 - 99 + 9;
            }
            if(n==100000) cnt = 99999-9999+999-99+9;
            Console.WriteLine(cnt);
        }

    }
  
    class Input
    {
        public static int getInt()
        {
            int i = int.Parse(Console.ReadLine());
            return i;
        }

        public static string getString()
        {
            string s = Console.ReadLine();
            return s;
        }
        public static int[] getIntArray()
        {
            string[] s = Console.ReadLine().Split(' ');
            int[] num = s.Select(x=>int.Parse(x)).ToArray();
            return num;
        }
        public static long[] getLongArray()
        {
            string[] s = Console.ReadLine().Split(' ');
            long[] num = s.Select(x=>long.Parse(x)).ToArray();
            return num;
        }
    }

}