문제
10진법의 숫자 N과 0과 1로 이뤄진 숫자 S가 주어질 때, S를 B진법의 숫자라 하였을 때 N의 값과 동일하게 만드는 0보다 큰 실수 B를 찾는 프로그램을 작성하라.
예를 들어, N = 10 이고, S = "00010"이라고 할 경우, S를 10진법으로 읽을 경우에 S와 N의 값이 같아지고, N = 21 이고, S = "10101"일 경우 S를 2진법으로 읽을 경우에 S와 N이 같아진다. 또한 N = 6이고, S = "10101"일 경우 진법으로 읽을 경우 N과 6이 같아진다.
주의사항
N과 S의 값이 같은지 비교하기 위해서는 다음과 같이 B진법의 숫자를 10진법으로 변환한다.
S_10 = S[0] x B^(N-1) + S[1] x B^(N-2) + ... + S[n-2] x B^1 + S[n-1] x B^0
여기서 n은 S의 자리수를 뜻하며, S[i]는 S의 i번째 자리수를 뜻한다. 그리고 맨 앞 자리의 경우S[0]이고, 맨 뒤 자리의 숫자의 경우 S[n-1]이다.
입력
입력의 첫 번째 줄에는 테스트 케이스의 개수 (T<=100)이 입력된다.
그 다음 줄부터 개의 테스트 케이스가 입력되는데, 테스트 케이스는 N(N<=100), S로 이뤄진다. S는 자리수가 50 이하인 0과 1로 이뤄진 숫자이다.
출력
각 테스트 케이스에 대해 N과 S의 값을 같게 하는 실수 B를 소수점 여섯째 자리에서 반올림하여 출력한다. 만약 불가능한 경우 -1.00000 을 출력하고, B가 여러개 존재하면 -2.00000 을 출력한다.
예제
6
10 00010
21 10101
6 10100
21 1011111111011110111111110011111111011111111111110
1 1
1 001000
10.00000
2.00000
1.41421
0.96674
-2.00000
1.00000