To build a special unary regular expression
There is a "smart" way of following your approach:
$$
(a^p)^*a(\epsilon+a)^{p-1}
$$
Here $r^p$ is shortcut for $r$ concatenated $p$ times.

This regular expression has length $O(p)$. On the other hand, using the pumping lemma it is not hard to show that the minimal NFA for the language contains at least $p$ states, and this gives a lower bound of $\Omega(p)$ on the size of a regular expression for the language, since a regular expression can be translated to an NFA with only a constant multiplicative blow-up in size.