A general way to solve this kind of problem is with counting polynomials.
$$\frac{17}{20} + \frac{3}{20} x$$
this polynomial represents rolling 1d20 and having a 3/20 chance of getting a crit. The crit chance is the coefficient to the \$x^1\$ term.
For 3d20 it looks like:
$$\left(\frac{17}{20} + \frac{3}{20} x\right)^3$$
which is
$$\left(\frac{17}{20}\right)^3 + 3\left(\frac{17}{20}\right)^2\frac{3}{20} x + 3 \frac{17}{20}\left(\frac{3}{20}\right)^2 x^2 + \left(\frac{3}{20}\right)^3x^3$$
where the \$x^1\$ through \$x^3\$ represent the 1 through 3 of the dice landing on 18 19 or 20.
We could add up the coefficients of the \$x^1\$ through \$x^3\$ cases, but we also know that the coefficients of all 4 terms add up to 1 – so we can just take the \$x^0\$ coefficient and subtract 1.
$$1-\left(\frac{17}{20}\right)^3$$
or
$$\frac{8000-4913}{8000}$$
aka about $$38.6\%$$
Now this is a bit complicated; but we can use it to analyze more complicated cases.
Imagine a rule that states that crits from elven accuracy deal an extra 50 damage, but only if you had already critted. We can distinguish the elven accuracy crit from the others:
$$\left(\frac{17}{20} + \frac{3}{20} x\right)^2 \left( \frac{17}{20} + \frac{3}{20} y
\right)$$
by using a different variable (\$y\$ instead of \$x\$).
We can then expand
$$\left(\frac{17}{20}\right)^2 + 2\frac{3\cdot17}{20^2}x + \left(\frac{3}{20} x\right)^2 \left(\frac{17}{20} + \frac{3}{20} y
\right)$$
or
$$\frac{17^3}{20^3} + \frac{3\cdot17^2}{20^3}y + 2\frac{3\cdot17^2}{20^3}x + 2\frac{3^2\cdot17}{20^3}xy + \frac{3^2\cdot17}{20^3} x^2 + \frac{3^3}{20^3} x^2y$$
then isolate the cases that have both an \$x\$ and a \$y\$, from those with only \$x\$s or only a \$y\$.
For the most part, this technique really gets useful when you can feed the polynomials to a program that can do the number crunching for you.