For any unitary matrix $U$ and integer $k>0$, there exists a polynomial $p(t)$, such that the matrix $B=p(U)$ satisfies the equation $B^k=U.$ 
Prove that for any unitary matrix $U$ and integer $k>0$, there exists a polynomial $p(t)$, such that the matrix $B=p(U)$ satisfies the equation $B^k=U.$

I am learning spectral theorem and SVD. I think they are related to the proof. But I don't know how to use them to prove the proposition.

Let $\{\lambda_1, \ldots , \lambda_m\}$ be distinct eigenvalues of $U$, and $\{\lambda_1,\ldots, \lambda_n\}$ be the complete set of eigenvalues so that $\lambda_{m+1},\ldots , \lambda_n$ are repeated eigenvalues if they exist. By Spectral Theorem, we have
$$
U=VDV^*
$$
with $V$ unitary, $D$ being diagonal with $\{\lambda_1,\ldots, \lambda_n\}$ as diagonal entries. 
Since $U$ is unitary $|\lambda_i|=1$ for each $i$. Take $k$-th root of each eigenvalues, we have the set $\{\mu_1,\ldots, \mu_n\}$ with $\mu_i=\lambda_i^{1/k}$ for cach $i$. 
Now, we want a polynomial $p(x)$ such that $p(\lambda_i)=\mu_i$ for $1\leq i\leq m$. Such polynomial exists by Lagrange interpolation. 
Then we have $p(U)^k=Vp(D)^kV^*=VDV^*=U$. 
