TopcoderArchiveVisit Topcoder
SRM16 Mar 2018
SRM 731

RingLex

Problem statement, definition, constraints, and public examples.

Problem Statement

Hero has an infinite periodic string t. You are given the String s that is the period of Hero's string. For example, if s = "abc", Hero's actual string is t = "abcabcabcabc..." Let n be the length of string s. Hero is now going to use the infinite string t to generate a new n-character string by doing the following steps:
  1. He will choose an offset: a non-negative integer x.
  2. He will choose the length of a step: a prime number p that is less than n.
  3. The new string will consists of the first n characters we can read in the string t if we start at the index x and after each character we move p positions to the right.
Formally, Hero's new string will consist of the following characters, in order: t[x], t[x + p], t[x + 2*p], ..., t[x + (n-1)*p]. Find and return the lexicographically smallest string Hero can produce.

Definition

Class:
RingLex
Method:
getmin
Parameters:
String
Returns:
String
Method signature:
String getmin(String s)
(be sure your method is public)

Notes

  • Given two distinct strings of the same length, the lexicographically smaller one is the one that has a smaller character at the first position where they differ.
  • A positive integer p is a prime if it has exactly two distinct divisors: 1 and p. Note that the number 1 is not a prime.

Constraints

  • s will contain between 3 and 50 characters, inclusive.
  • Each character in s will be between 'a' and 'z', inclusive.

Examples

  1. "cba"
    Returns: "abc"
    Hero should choose the offset x=2 and the step p=2. The resulting string is t[2]+t[4]+t[6] = 'a'+'b'+'c' = "abc".
  2. "acb"
    Returns: "abc"
    Here, Hero should choose x=0 and p=2.
  3. "abacaba"
    Returns: "aaaabcb"
  4. "aaabb"
    Returns: "aabab"
  5. "azzzabbb"
    Returns: "abazabaz"
    Note that Hero cannot choose x=0 and p=4, because 4 is not a prime number.
  6. "abbaac"
    Returns: "aaaaaa"
  7. "fsdifyhsoe"
    Returns: "dehifsfsoy"
Back to all problems