Let me add one more solution. **It is not really different from the accepted one, but it includes all details.** The problem is that a student without sufficient experience will not even see necessity to fill details.

**Theorem.**
*If $f\in C^\infty(\mathbb{R})$ and for every $x\in\mathbb{R}$ there is a nonnegative integer $n$ such that $f^{(n)}(x)=0$, then $f$ is a
polynomial.*

The following exercise shows that the result cannot be to easy.

**Exercise.** *Prove that there is a function $f\in C^{1000}(\mathbb{R})$ which is not a polynomial, but has the property described in the above
theorem.*

*Proof of the theorem.*
Let $\Omega\subset\mathbb{R}$ be the union of all open intervals $(a,b)\subset\mathbb{R}$
such that $f|_{(a,b)}$ is a polynomial. The set $\Omega$ is open, so
$$
\Omega=\bigcup_{i=1}^N (a_i, b_i)\, ,
\qquad \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1)
$$
where $a_i<b_i$ and $(a_i, b_i)\cap (a_j, b_j) = \emptyset$ for $i\neq j$, $1\leq N\leq\infty$.
Observe that $f|_{(a_i, b_i)}$ is a polynomial
(Why?)*.
We want to prove that $\Omega=\mathbb{R}$. First we will prove that
$\overline{\Omega}=\mathbb{R}$. To this end it suffices to prove that for any
interval $[a,b]$, $a<b$ we have $[a,b]\cap\Omega\neq\emptyset$.
Let
$$
E_n=\{x\in\mathbb{R}:\, f^{(n)}(x)=0\}\, .
$$
The sets $E_n\cap [a,b]$ are closed and
$$
[a,b]=\bigcup_{n=0}^\infty E_n\cap [a,b]\, .
$$
Since $[a,b]$ is complete, it follows from the Baire theorem that for some $n$
the set $E_n\cap [a,b]$ has nonempty interior (in the topology of $[a,b]$),
so there is $(c,d)\subset E_n\cap [a,b]$ such that $f^{(n)}=0$ on $(c,d)$.
Accordingly $f$ is a polynomial on $(c,d)$ and hence
$$
(c,d)\subset\Omega\cap [a,b]\neq\emptyset.
$$
The set $X=\mathbb{R}\setminus\Omega$ is closed and hence complete.
It remains to prove that $X=\emptyset$. Suppose not.
Observe that every point $x\in X$ is an accumulation point of the set,
i.e. there is a sequence $x_i\in X$, $x_i\neq x$, $x_i\to x$. Indeed,
otherwise $x$ would be an isolated point, i.e. there would be two intervals
$$
(a,x),\, (x,b)\subset\Omega,\ x\not\in\Omega\, .
\qquad \ \ \ \ \ \ \ \ \ \ \ \ (2)
$$
The function $f$ restricted to each of the two intervals is a polynomial, say
of degrees $n_1$ and $n_2$. If $n>\max\{ n_1, n_2\}$, then
$f^{(n)}=0$ on $(a,x)\cup (x,b)$. Since
$f^{(n)}$ is continuous on $(a,b)$, it must be zero on the entire interval
and hence $f$ is a polynomal of degree $\leq n-1$ on $(a,b)$, so
$(a,b)\subset\Omega$ which contradicts (2).

The space $X=\mathbb{R}\setminus\Omega$ is complete.
Since
$$
X=\bigcup_{n=1}^\infty X\cap E_n\, ,
$$
the second application of the Baire theorem
gives that $X\cap E_n$ has a nonempty interior in the topology of $X$, i.e.
there is an interval $(a,b)$ such that
$$
X\cap (a,b)\subset X\cap E_n\neq\emptyset\, .
\qquad \ \ \ \ \ \ \ \ \ \ \ \ \ (3)
$$
Accordingly $f^{(n)}(x)=0$ for all $x\in X\cap (a,b)$.
Since for every $x\in X\cap (a,b)$ there is a sequence $x_i\to x$, $x_i\neq x$
such that $f^{(n)}(x_i)=0$
it follows from the definition of the derivative that
$f^{(n+1)}(x)=0$ for every $x\in X\cap (a,b)$, and by induction
$f^{(m)}(x)=0$ for all $m\geq n$ and all $x\in X\cap (a,b)$.

We will prove that $f^{(n)}=0$ on $(a,b)$. This will imply that
$(a,b)\subset\Omega$ which is a contradiction with (3).
Since $f^{(n)}=0$ on $X\cap (a,b)=(a,b)\setminus\Omega$ it remains to prove that
$f^{(n)}=0$ on $(a,b)\cap\Omega$.
To this end it suffices to prove that for any interval
$(a_i, b_i)$ that appears in (1) such that
$(a_i, b_i)\cap (a,b)\neq\emptyset$, $f^{(n)}=0$ on $(a_i, b_i)$. Since
$(a,b)$ is not contained in $(a_i, b_i)$ one of the endpoints belongs
to $(a,b)$, say $a_i\in (a,b)$. Clearly
$a_i\in X\cap (a,b)$ and hence $f^{(m)}(a_i)=0$ for all $m\geq n$.
If $f$ is a polynomial of degree $k$ on $(a_i, b_i)$, then
$f^{(k)}$ is a nonzero constant on $(a_i, b_i)$, so $f^{(k)}(a_i)\neq 0$ by
continuity of the derivative. Thus $k<n$ and hence
$f^{(n)}=0$ on $(a_i,b_i)$.
$\Box$

**Exercise.**
*As the previous exercise shows the theorem is not true if we only assume that $f\in C^{1000}$. Where did we use in the proof the
assumption $f\in C^\infty(\mathbb{R})$?*

*It suffices to prove that $f$ is a polynomial on every compact
subinterval $[c,d]\subset (a_i, b_i)$. This subinterval has a finite covering by
open intervals
on which $f$ is a polynomial. Taking an integer $n$ larger than the maximum
of the degrees of these polynomials, we see that $f^{(n)}=0$ on $[c,d]$
and hence $f$ is a polynomial of degree $<n$ on $[c,d]$.

23more comments