- A+

Category：Languages

I can't understand how to solve the problem that the teacher gave me.

Given a number N (0 <= N <= 100), find its

firstdigit.

For example:

`input: 100 result: 1 input: 46 result: 4 input: 3 result: 3 `

It seemed easy at first, but (as the teacher said) it should be done using **ONLY** integer data types (in other words, using `+`

, `-`

, `*`

, `/`

and `%`

operators). Is it even possible to do it this way?

I just can't realize how to extract the first digit from a *variable-length* number without using things like log10, conditions, "while" loop or string conversion.

**Edit:** Now tested for 0 and 100:

`var result = n / 10 * (1 - n / 100) + n / 100 + (109 - n) / 100 * n; `

How it works:

n | n / 10 * (1 - n / 100) | n / 100 | (109 - n) / 100 * n ----------------------------------------------------------------- 10 - 99 | 1 - 9 | 0 | 0 ----------------------------------------------------------------- 100 | 0 | 1 | 0 ----------------------------------------------------------------- 0 - 9 | 0 | 0 | 0 - 9