Calculate your stack exchange reputation
Bash, 247 202 192 bytes



n=$1 bash &lt;(sed 's/E/)echo /;s/C/ Aaccept/;s/A/answer /
s/.*)/((&amp;)\&amp;\&amp;/'&lt;&lt;&lt;'a=(n+1)/15,a-1)s=s;q=question
aE$aC$s
r=n%5,r-4)d=d&amp;&amp;
r&gt;1E1Ced
1-r%2E1 Adownvote$d
n-=15*a,n&gt;8)q=A
n&gt;3E1 $q upvote')


How it works

After the sed command does it job, the following bash script gets executed:

((a=(n+1)/15,a-1))&amp;&amp;s=s;q=question
((a))&amp;&amp;echo $a answer accept$s
((r=n%5,r-4))&amp;&amp;d=d&amp;&amp;
((r&gt;1))&amp;&amp;echo 1 answer accepted
((1-r%2))&amp;&amp;echo 1 answer downvote$d
((n-=15*a,n&gt;8))&amp;&amp;q=answer 
((n&gt;3))&amp;&amp;echo 1 $q upvote


To obtain the optimal solution (minimal number of events to get n reputation), it suffices to compute the number of accepted answers (a) necessary to get to a reputation below 16 (1 answer accept) and handle the residue as follows:

1  (no rep change)
2  answer accepted, answer downvoted
3  answer accepted
4  question upvote, answer downvote
5  question upvote, answer downvoted
6  question upvote
7  question upvote, answer accepted, answer downvoted
8  question upvote, answer accepted
9  answer upvote, answer downvote
10 answer upvote, answer downvoted
11 answer upvote
12 answer upvote, answer accepted, answer downvoted
13 answer upvote, answer accepted  
14 answer accept, answer downvote
15 answer accept, answer downvoted