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: Wrong Answer)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Solution
    {
        public long Proc(string Source)
        {
            long n = Source.Length;
            long src = long.Parse(Source);
            long number = 0;

            if (n % 2 == 0)
            {
                for (long i = 1; i < n; i += 2)
                {
                    number += (long)Math.Pow(10, i) - (long)Math.Pow(10, i - 1);
                }
            }
            else
            {
                for (long i = 1; i < n; i += 2)
                {
                    number += (long)Math.Pow(10, i) - (long)Math.Pow(10, i - 1);
                }

                number += (src % (long)Math.Pow(10, n - 1)) +
                    ((src / (long)Math.Pow(10, n - 1) - 1) * (long)Math.Pow(10, n - 1));
            }

            return number;
        }

        public long Proc2(string Source)
        {
            long src = long.Parse(Source);
            long count=0;

            for (long i = 1; i < src; i++)
            {
                if (i.ToString().Length % 2 == 1) count++;
            }

            return count;
        }
    }

    public class Program
    {
        static void Main(string[] args)
        {
            try
            {
                var str = Console.ReadLine();
                var s = new Solution();
                var re = s.Proc2(str);
                Console.WriteLine(re);

                //Random rnd = new System.Random();
                //while (true)
                //{
                //    string src = rnd.Next(1, 10000).ToString();
                //    var s = new Solution();
                //    s.Proc2("405");
                //    s.Proc("405");
                //    if (s.Proc(src) != s.Proc2(src))
                //    {
                //        throw new Exception("");
                //    }
                //    Console.WriteLine("Cp");
                //}

                //var str = Console.ReadLine();
                

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            //Console.WriteLine("終了");
            //Console.Read();
        }


    }
}