private static int[] patternLenghts = {1,
private static int modWithoutZero(int a, int b)
return ((a - 1) % b) + 1;
private static int getLastDigitWithinBase(int[] list, int preservedBase)
return modWithoutZero(list[0], preservedBase);
int currentRoot = list[0];
int currentPatternLength = Calculator.patternLenghts[currentRoot];
int lastDigits = Calculator.getLastDigitWithinBase(list.Skip(1).ToArray<int>(), currentPatternLength);
return modWithoutZero(Convert.ToInt32(Math.Pow(currentRoot, lastDigits)), preservedBase);
public static int LastDigit(int[] array)
return Calculator.getLastDigitWithinBase(array, 10);
public static void Main()
Console.WriteLine(Calculator.LastDigit(new int[]{7, 0, 3}));