Ошибка выполнения при отправке в 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));
        }
    }
}

0 ответов

Другие вопросы по тегам