String reversing x times
choice of language

Unfortunately Java is not the best choice for doing such tasks. Object creation, reference handling and alike simply takes time.

So to speed up we need to throw away some of the benefits provides by the JVMs standard lib and switch to procedural programming on arrays.

optimizations

The calculation of the cycle length is a clever trick. But there must be an algorithm without looping which would speed up this calculation too. 

implementation

As mentioned a fast solution must avoid object creation at all and should work on an array of chars rather than on  Strings. It should basically look like this:

public final class XIterations {
    public static String xReverse(String input, long iterations) {
      long iterationsRequired =  iterations% calculateCycleLength(input.length());
      char[] chars = input.toCharArray();
      for(int i = 0 ; i &lt; iterationsRequired ; i++)
        chars = reverse(chars);
      return new String(chars);
    }
}


In your code I cannot find how you handle the skipping of the start of the string. I would do this by using a recursive call like this:

private char[] reverse(char[] chars, int startIndex){
   if(chars.length == startIndex) {
        return chars;
   } else {
      // reverse chars in array starting at startIndex
      return reverse(chars, ++startIndex);
   }
}