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 (GCC 5.4.1) (judge verdict: Accepted)


#include <stdio.h>
#include <math.h>

int main()
{
    
	int N;
	int m = scanf("%d",&N);
	if (m == EOF) {
		printf("scan error!\n");
		return 0;
	}

	int ten = 1;
	int ten_num = 1;
	int ten_max = 6;
	for (int i = 0; i < ten_max; i++) {
		if (N < ten) {
			ten_num--;
			break;
		}
		else if (i == (ten_max-1)) {
			break;
		}
		//printf("%d\n", ten);
		ten *= 10;
		ten_num++;
	}

	//printf("%d\n", ten_num);
	int sum = 0;

	if (ten_num % 2 == 1) {
		sum += N - pow(10, ten_num-1) + 1;
		ten_num--;
	}

	for (int t = ten_num; t > 0; t--) {
		if (t % 2 == 1) {
			sum += pow(10, t) - pow(10, t - 1);
		}
		//printf("%d\t%d\n", t, sum);
	}

	printf("%d\n", sum);

	return 0;
}