public static DevInt pow(DevInt x, int p) { if (p == 1) { return x; } if (p <= 0) { return new DevInt(); } if (p%2==0) { return pow(x * x, p / 2); } else { return x*pow(x*x,(int)Math.Floor((double)p/2)); } }