Ошибка выполнения при отправке в Hacker Earth Проблема: циклические смены
Постановка задачи в HackerEarth:
Большое двоичное число представлено строкой A размера N, состоящей из нулей и единиц. Вы должны выполнить циклический сдвиг этой строки. Операция циклического сдвига определяется следующим образом:
Если строка A равна [A0,A1,A2,...,AN-1], то после выполнения одного циклического сдвига строка становится [A1,A2,...,AN-1,A0]. Вы выполняли сдвиг бесконечное количество раз и каждый раз записывали значение двоичного числа, представленного строкой. Максимальное двоичное число, которое образуется после выполнения (возможно, 0) операции, равно B. Ваша задача — определить количество циклических сдвигов, которые можно выполнить так, чтобы значение, представленное строкой A, было равно B в K-й раз.
Тем не менее, все примеры случаев для очистки, я столкнулся с ошибкой времени выполнения при отправке. Может кто-нибудь сказать мне, где я ошибся? код:
import java.util.*;
class TestClass {
public static void main(String args[] ) throws Exception {
Scanner s = new Scanner(System.in);
long N = s.nextInt();
for(int o=0;o<N;o++) //to loop through test cases
{
long n1 = s.nextInt();
long k = s.nextInt();
String S = s.next();
int max = 0;
int d,n=0,j,p=-1; // p for periodicity in the given inout which influence on max('B') //repetation
char str;
for(int i=0;i<n1;i++) //To find max and also periodicity
{
StringBuffer b = new StringBuffer(S);
d = Integer.parseInt(S,2);
if(max<d)
{
max = d;
n=i;
}
else if(max == d)
{
p=i-n;
break;
}
str = S.charAt(0); //to left shift with constant complexity
b.deleteCharAt(0);
S = b.toString()+Character.toString(str);
}
if(p==-1)
{
System.out.println((n+(k-1)*n1)%(10^9+7));
}
else
System.out.println((n+(k-1)*p)%(10^9+7));
}
}
}