Find all functions $f: \mathbb{N} \mapsto \mathbb{N}$ so that for any positive integer $n$ and finite sequence of positive integers $a_0, \dots, a_n$, whenever the polynomial $a_0+a_1x+\dots+a_nx^n$ has at least one integer root, so does \[f(a_0)+f(a_1)x+\dots+f(a_n)x^n.\]

[i]Proposed by Sutanay Bhattacharya[/i]
1. Define the polynomial \( g_n(x, a_0, \ldots, a_n) = a_0 + a_1 x + \ldots + a_n x^n \).
2. We need to find all functions \( f: \mathbb{N} \to \mathbb{N} \) such that for any positive integer \( n \) and any finite sequence of positive integers \( a_0, \ldots, a_n \), if \( g_n(x, a_0, \ldots, a_n) \) has an integer root, then so does \( g_n(x, f(a_0), \ldots, f(a_n)) \).

### Claim: If \( f(x) \) works, then so does \( c f(x) \) for any positive integer constant \( c \).

**Proof:**
- Consider the polynomial \( g_n(x, c f(a_0), \ldots, c f(a_n)) \).
- We have:
  \[
  g_n(x, c f(a_0), \ldots, c f(a_n)) = c (f(a_0) + f(a_1) x + \ldots + f(a_n) x^n) = c g_n(x, f(a_0), \ldots, f(a_n))
  \]
- Since scaling by a constant \( c \) does not change the roots of the polynomial, the roots of \( g_n(x, c f(a_0), \ldots, c f(a_n)) \) are the same as those of \( g_n(x, f(a_0), \ldots, f(a_n)) \).
- Therefore, if \( f(x) \) works, then \( c f(x) \) also works. \(\blacksquare\)

### Without loss of generality, assume \( c = 1 \).

3. Consider the polynomial \( g_1(x, f(n), f(1)) = 0 \). This implies \( f(1) \mid f(n) \) for all \( n \in \mathbb{N} \). Assume \( f(1) = 1 \).

4. Consider the polynomial \( g_2(x, 1, 2, 1) = 1 + 2x + x^2 \), which has the integer root \( x = -1 \).

5. Then, \( g_2(x, f(1), f(2), f(1)) = 1 + f(2)x + x^2 = 0 \). The roots of this polynomial are:
   \[
   x = \frac{-f(2) \pm \sqrt{f(2)^2 - 4}}{2}
   \]
   Since the polynomial has integer roots, \( f(2) \) must be such that the discriminant \( f(2)^2 - 4 \) is a perfect square. The only possible values for \( f(2) \) that satisfy this condition are \( f(2) = 2 \).

### Claim: \( f(n) = n \).

**Proof:**
- Consider the polynomial \( g_{2n}(x, 1, 2, 1, 2, \ldots, 1, 2, n) = 1 + 2x + x^2 + 2x^3 + x^4 + \ldots + x^{2n-2} + 2x^{2n-1} + nx^{2n} \), which has the root \( x = -1 \).
- Since \( f(2) = 2 \) and \( f(1) = 1 \), we have:
  \[
  g_{2n}(x, f(1), f(2), f(1), f(2), \ldots, f(1), f(2), f(n)) = 1 + 2x + x^2 + 2x^3 + x^4 + \ldots + x^{2n-2} + 2x^{2n-1} + f(n)x^{2n}
  \]
- This polynomial must also have the root \( x = -1 \). Substituting \( x = -1 \) into the polynomial, we get:
  \[
  (1 - 2 + 1 - 2 + \ldots + 1 - 2) + f(n) = 0
  \]
  The terms in the parentheses sum to \( -n \), so we have:
  \[
  -n + f(n) = 0 \implies f(n) = n
  \]
- Therefore, the only function that works is \( f(n) = n \).

The final answer is \( \boxed{ f(n) = n } \).