|
|
вернуться в форумSome Hints to solve it without TLE Here are some hints 1)Try to find the number of steps for every number to the final position and put it into a array 2)then try to find the least common multiple off all elements from the resulted array let's consider an exemple 1 2 3 4 (the input is 4 ) 4 2 1 3 4 2 1 3 int var = a[1] (in this example a[1] = 4 considering the array start from 1). while(var != i) (i = 1 the first index of the array) { var = a[var]; ((var)4 = a[4], var = 3, than 3 = var[3], var = 1(found the last position) k++; (is the number of steps that take to bring to last position) } lets make the array of k x[i] = k; than k = 0; i++; this array will look like i <- 1,n (3 1 3 3) than just find the least common multiple for all elements that is 3 input output 4 3 4 2 1 3 and now the sample 5 4 1 5 2 3 the count arraw will look like x[] = (3 3 2 3 2) and the least common multiple is 6 explenation a[1] = 4 var = a[1] = 4(k = 1) var = a[var](4 = a[4])(k = 2) var = 2 after 2 = a[2] = 1(k = 3) (finish) first k = 3 steps x[1] = 3 after i++; var = a[2] ( var = 1 ) after 1 = a[1] (var = 4) after (4 = a[4] = 2 = i) finish k = 3 and so on until the last element I hope this will help (i'm not very good at expanation but i try). |
|
|