Não lance para frente e para trás para dobrar apenas para usar Math.Pow () . Seriamente.
public static int Exp(this int x, int y)
{
int result = 1;
while (y > 0)
{
if ((y & 1) != 0)
{
result *= x;
}
y >>= 1;
x *= x;
}
return result;
}