Grooving Monkeys
Grooving Monkeys
N monkeys are invited to a party where they start dancing. They dance in a circular formation, very similar to a Gujarati Garba or a Drum Circle. The dance requires the monkeys to constantly change positions after every 1 second.
The change of position is not random & you, in the audience, observe a pattern. Monkeys are very disciplined & follow a specific pattern while dancing.
Consider N = 6, and an array monkeys = {3,6,5,4,1,2}.
This array (1-indexed) is the dancing pattern. The value at monkeys[i], indicates the new of position of the monkey who is standing at the ith position.
Given N & the array monkeys[ ], find the time after which all monkeys are in the initial positions for the 1st time.
Constraints
1<=t<=10(test cases)1<=N<=10000(Number of monkeys)
Input Format
- First line contains single integer
t, denoting the number of test cases.Each test case is as follows: - Integer
Ndenoting the number of monkeys. - Next line contains
Ninteger denoting the dancing pattern array,monkeys[].
Output
tlines- Each line must contain a single integer
S, whereSis the minimum number of seconds after which all the monkeys are in their initial position.
Example Input 1
1 6 3 6 5 4 1 2
Output
6
Explanation
- Consider
N = 6, and an arraymonkeys = {3,6,5,4,1,2} - Suppose monkeys are
a,b,c,d,e,f& Initial position (att = 0) ->a,b,c,d,e,f - At
t = 1 -> e,f,a,d,c,b,awill move to 3rd position,bwill move to 6th position,cwill move to 5th position,dwill move to 4th position,ewill move to 1st position andfwill move to 2nd position. - Thus from
a,b,c,d,e,fatt =0, we gete,f,a,d,c,bat t =1. Recursively applying same transpositions, we get following positions for different values of t. - At
t = 2 -> c,b,e,d,a,f - At
t = 3 -> a,f,c,d,e,b - At
t = 4 -> e,b,a,d,c,f - At
t = 5 -> c,f,e,d,a,b - At
t = 6 -> a,b,c,d,e,f
Since at t = 6, we got the original position, therefore the answer is 6.
N monkeys are invited to a party where they start dancing. They dance in a circular formation, very similar to a Gujarati Garba or a Drum Circle. The dance requires the monkeys to constantly change positions after every 1 second.
The change of position is not random & you, in the audience, observe a pattern. Monkeys are very disciplined & follow a specific pattern while dancing.
Consider N = 6, and an array monkeys = {3,6,5,4,1,2}.
This array (1-indexed) is the dancing pattern. The value at monkeys[i], indicates the new of position of the monkey who is standing at the ith position.
Given N & the array monkeys[ ], find the time after which all monkeys are in the initial positions for the 1st time.
Constraints
1<=t<=10(test cases)1<=N<=10000(Number of monkeys)
Input Format
- First line contains single integer
t, denoting the number of test cases.Each test case is as follows: - Integer
Ndenoting the number of monkeys. - Next line contains
Ninteger denoting the dancing pattern array,monkeys[].
Output
tlines- Each line must contain a single integer
S, whereSis the minimum number of seconds after which all the monkeys are in their initial position.
Example Input 1
1 6 3 6 5 4 1 2
Output
6
Explanation
- Consider
N = 6, and an arraymonkeys = {3,6,5,4,1,2} - Suppose monkeys are
a,b,c,d,e,f& Initial position (att = 0) ->a,b,c,d,e,f - At
t = 1 -> e,f,a,d,c,b,awill move to 3rd position,bwill move to 6th position,cwill move to 5th position,dwill move to 4th position,ewill move to 1st position andfwill move to 2nd position. - Thus from
a,b,c,d,e,fatt =0, we gete,f,a,d,c,bat t =1. Recursively applying same transpositions, we get following positions for different values of t. - At
t = 2 -> c,b,e,d,a,f - At
t = 3 -> a,f,c,d,e,b - At
t = 4 -> e,b,a,d,c,f - At
t = 5 -> c,f,e,d,a,b - At
t = 6 -> a,b,c,d,e,f
Since at t = 6, we got the original position, therefore the answer is 6.
Solution:
from math import gcd
def lcm(x,y):
return(int((x*y)/gcd(x,y)))
T=int(input())
while(T):
T=T-1
n=int(input())
m=list(map(int,input().split()))
t=1
for p in range(n):
c=0
while(m[p]!=0):
h=p
p=m[p]-1
m[h]=0
c+=1
if(c!=0):
t=lcm(t,c)
print(int(t))
Comments
Post a Comment