Find all functions $f:\mathbb{R}\to\mathbb{R}$ satisfying the following functional equation: $$f(\lfloor x\rfloor y)=f(x)\lfloor f(y)\rfloor\quad\quad\text{for all }x,y\in\mathbb{R},$$ where $\lfloor\cdot\rfloor$ is the floor function (largest integer less than or equal to its argument).

(Source: IMO 2010 Shortlist, question A1.)

  • $\begingroup$ Well, we can immediately get the usual 3: rot13(s(k) = 0, s(k) = 1, naq s(k) = 0 vs k = 0, 1 bgurejvfr). Without the floor function, there is another class of functions that works but it's not clear how to go from those to something that satisfies this. I'm excited to see where this goes. $\endgroup$
    – hdsdv
    Commented Jun 3, 2020 at 8:10
  • $\begingroup$ Edit on my previous comment: the third one doesn't even work here. Yikes. $\endgroup$
    – hdsdv
    Commented Jun 3, 2020 at 8:17
  • 1
    $\begingroup$ I know the source. $\endgroup$ Commented Jun 3, 2020 at 8:22
  • $\begingroup$ @CulverKwan Let's wait to edit in a link to the solution until someone solves it who hasn't already done it before? $\endgroup$ Commented Jun 3, 2020 at 9:04
  • $\begingroup$ But I did it myself! $\endgroup$ Commented Jun 3, 2020 at 9:06

4 Answers 4


Some observations:

If there exists a number $x_0$ such as $\lfloor x_0 \rfloor \ne 0$ and $f(x_0)\ne 0$, we can write any number $z=\lfloor x_0 \rfloor y$ for some $y$. Now we get that $f(z)=f(\lfloor x_0 \rfloor y)=f(x_0)\lfloor f(y) \rfloor$. Since $\lfloor f(y) \rfloor$ is always an integer regardless of $y$, that means that all values of $f$ are integer multiples of some number $q=f(x_0)$. Assume that $f$ takes at least two nonzero different values $n_1q$ and $n_2q$, let $f(z_1)=n_1q$ and $f(z_2)=n_2q$, where $|n_1|<|n_2|$ and $z_i$ lie outside of $[0, 1)$. Now we get $z_1=\lfloor z_2 \rfloor y$ for some y and write $n_1q = f(z_1) = f(\lfloor z_2 \rfloor y)=f(z_2)\lfloor f(y)\rfloor=n_2 q \lfloor f(y) \rfloor$, or $\lfloor f(y) \rfloor = \frac{n_1}{n_2}$. But the left side is an integer but the right is not (since $|n_1|<|n_2|$, so $0<|\frac{n_1}{n_2}|<1$).
So, we conclude that $f$ can take at most one nonzero value outside of $[0, 1)$. And if $x$ lies in $[0, 1)$, we have $\lfloor x \rfloor = 0$ and $f(0\cdot y)=f(x)\lfloor f(y) \rfloor$, or $\frac{f(0)}{f(x)}=\lfloor f(y) \rfloor$ for any $y$. That means that if exists such $0\leqslant x<1$ and $f(x)\ne 0$, then $f(x)$ must be constant outside of $[0, 1)$ (see above).

Update (next part)

If $f(x)$ is constant outside of $[0, 1)$, then necessary $\lfloor f(x) \rfloor = 1$ (for example, that's because $f(4)=f(2)$, but $f(4)=f(2\cdot 2)=f(2) \lfloor f(2) \rfloor$. Since a number $0\leqslant z<1$ can be written as $-1(-z)$, we have $f(z)=f(-1)\lfloor f(-z)\rfloor$, so $f$ must be constant on all $\mathbb{R}$ (because both $-1$ and $-z$ lie outside of $[0, 1)$.
On the other hand, let's assume that $f(x)=0$ for any $x$ in $[0,1)$. So, for any number $z$ we can pick an integer $n$ such as $0\leqslant y=\frac z n < 1$. So we get $f(z)=f(n\cdot y)=f(n) \lfloor f(y) \rfloor$. Since $f(y)$ is $0$, so is $f(z)$. So, $f$ is constant zero function.

Final answer:

The only solutions are constant functions $f(x)=c$, where either $c=0$ or $1\leqslant c <2$ (i.e. $\lfloor c\rfloor =1$).

  • 1
    $\begingroup$ Good progress. See if you can finish this off to find all the possible functions $f$ without seeing the solution :-) $\endgroup$ Commented Jun 3, 2020 at 9:06
  • $\begingroup$ @Randal'Thor I've finally found it. $\endgroup$
    – trolley813
    Commented Jun 3, 2020 at 20:19

I guess I took a scenic route to the solution! First,

$$f(1) = f(1\cdot 1) = f(\lfloor 1\rfloor \cdot 1) = f(1) \lfloor f(1) \rfloor,$$

so either

$f(1) = 0$ or $\lfloor f(1) \rfloor = 1.$


$f(1) =0$

then for all $y\in\mathbb{R}$,

$$f(y) = f(1\cdot y) = f(\lfloor 1\rfloor y) = f(1) \lfloor f(y)\rfloor = 0,$$


$f(y) = 0$ for all $y$.

So from now on assume instead that

$\lfloor f(1)\rfloor = 1$. In particular, $f(1)\neq 0$.


$n\in\mathbb{Z}$ and $\delta\in [0,1)$. Then $$f(n) = f( \lfloor n+\delta \rfloor \cdot 1) = f(n+\delta) \lfloor f(1) \rfloor = f(n+\delta), \phantom{NN} (***)$$


$f$ is constant on the half-open interval $[n,n+1)$, for each $n\in \mathbb{Z}$. Thus $f$ is determined by its values on the integers.

Now let

$q\in\mathbb{Z}$, and suppose $q\neq 0$. Then $$f(1) = f\left(q\cdot \frac{1}{q}\right) = f\left(\lfloor q\rfloor \cdot \frac{1}{q}\right) = f(q) \cdot \left\lfloor f\left(\frac{1}{q}\right)\right\rfloor.$$

Notice that

$f(q)\neq 0$ and $\lfloor f(1/q)\rfloor \neq 0$, since our assumption from earlier guarantees that $f(1)\neq 0$.


if $q> 1$ then $0<1/q<1$, so $$f(1/q) = f(0+1/q) = f(0),$$ by equation $(***)$. In particular, $\lfloor f(0)\rfloor = \lfloor f(1/2) \rfloor \neq 0$, since we said $\lfloor f(1/q)\rfloor \neq 0$ for all $q\in\mathbb{Z}\setminus \{ 0\}$.


if $q<-1$ then $-1<1/q<0$, so $f(1/q) = f(-1)$; hence $\lfloor f(-1)\rfloor \neq 0$.


for $q\in \mathbb{Z}\setminus \{-1,0,1\}$, we have $$f(q)=\begin{cases}f(1) / \lfloor f(0)\rfloor & \textrm{ if } q > 1\\f(1) / \lfloor f(-1)\rfloor & \textrm{ if } q < 1.\end{cases}$$ Thus $f$ is determined by its values at $0$, $1$, and $-1$.

Recall that

we assumed $\lfloor f(1)\rfloor = 1$, so $f(1) = 1+\epsilon$ for some $\epsilon \in [0,1)$. Similarly, let's write $f(0) = m+\gamma$, and $f(-1) = n+\delta$, where $m,n\in\mathbb{Z}$ and $\gamma,\delta\in [0,1)$. By the way, we already found that $m = \lfloor f(0) \rfloor \neq 0$, and similarly $n\neq 0$.


$$m+\gamma = f(0) = f( 0 (-1)) = (m+\gamma)(n),$$ so $(m+\gamma)(n-1) = 0$. We can't have $m+\gamma = 0$ because we said $f(0) \neq 0$, so we conclude that $n=1$.

We're almost done.

$$m+\gamma = f\left( -1 \cdot 0\right) = (1 + \delta) (m) = m + m\delta,$$ so $\gamma = m\delta$. Similarly, $\gamma = m \epsilon$.


$m + \gamma = f(0\cdot 0) = (m+\gamma) (m)$, which (since $m+\gamma \neq 0$) implies $m=1$. Thus $m=n=1$, and $\gamma=\delta=\epsilon$.


$f(1) = f(-1) = f(0) = 1 + \epsilon$. It now follows that $f(q) = 1+\epsilon$ for all $q\in \mathbb{Z}$, and indeed $f(x) = f(\lfloor x\rfloor) = 1+\epsilon$, for all $x\in \mathbb{R}$.

So all of the solutions must be

constant functions; either $f(x) = 0$, or $f(x) = 1+\epsilon$ for some fixed constant $\epsilon \in [0,1)$.


any of these functions certainly satisfies the functional equation, as is easy to check. $\Box$


Here's another approach, related to Culver Kwan's but not identical. (Also, unlike C.K. I hadn't seen the question before :-). For the avoidance of doubt, of course I didn't look at C.K.'s solution before finding mine.) I'll be a little less terse than Culver.

Suppose $\lfloor f\rfloor=0$ always. Then setting $x=1$ in the given equation yields $f(y)$ on the left and $0$ on the right, so $f$ is identically 0. This is indeed a solution; let's now suppose that $f$ is something else, so that $\lfloor f\rfloor$ isn't always 0.


pick a $y$ so that $\lfloor f(y)\rfloor\neq0$. The LHS of our equation depends only on $\lfloor x\rfloor$, so the RHS does too, so $f(x)$ depends only on $\lfloor x\rfloor$.


fix $x$ at a large (positive or negative) value and let $y$ vary from $0$ inclusive to $1$ exclusive. As it does, the LHS of our equation covers $f(t)$ for all $t$ between $0$ inclusive and $x$ exclusive, but the RHS is constant. Hence $f$ is constant (separately for values $\leq0$ and for values $\geq0$, but since $0$ is in both ranges $f$ must be constant everywhere).


if $t$ is the constant value, our original equation says $t=t\lfloor t\rfloor$ or $t(\lfloor t\rfloor-1)=0$, so either $t=0$ (a case we already mentioned) or $1\leq t<2$.


the solutions to our equation are the constant functions at 0 and at values between 1 inclusive and 2 exclusive.


We can easily check that the solutions are:

$f(x)=C$ where $C=0$ or $1\le C<2$


$x=0$ yields $f(0)\big(\lfloor f(y)\rfloor-1\big)=0$.


$f(0)\ne0$, $\lfloor f(y)\rfloor=1$. We sub $x=1$ in the original equation and have $f(y)=f(1)\lfloor f(y)\rfloor=f(1)$, which makes $f(x)=C$ for any constant $1\le C< 2$.


$f(0)=0$, then put $x=k$ where $0\le k\le1$. Then we have $f(k)\lfloor f(y)\rfloor=0$.

If for some possible values of $k$, $f(k)\ne0$, then we have $\lfloor f(y)\rfloor=0$ for all $y$, so we put $x=1$ in the original equation, which yields $f(y)=f(1)\lfloor f(y)\rfloor=0$, but this contradicts with the condition that there exist $0<k<1$ that $f(k)\ne0$.

So for all $k$, $f(k)=0$. For all $y\in\mathbb{R}$, we can always choose an integer $n$, such that $0\le \frac yn<1$. So putting $(n,\frac yn)$ for $(x,y)$, we have $f(y)=f(\lfloor n\rfloor\cdot\frac yn)=f(n)\lfloor f(y)\rfloor=0$.

Note: I know the question is IMO 2010 shortlist A1, and I have done it before. But I just need a while to recover my memories.

  • $\begingroup$ It seems rather easy for an IMO question. (But it's commonplace for quite a lot of the IMO shortlist problems to be too easy for the IMO, I guess.) $\endgroup$
    – Gareth McCaughan
    Commented Jun 3, 2020 at 10:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.