7919: USACO 2017 January Contest, Silver —— Problem 3. Secret Cow Code
[Creator : ]
Description
The cows are experimenting with secret codes, and have devised a method for creating an infinite-length string to be used as part of one of their codes.
Given a string $s$, let $F(s)$ be s followed by s "rotated" one character to the right (in a right rotation, the last character of s rotates around and becomes the new first character).
Given an initial string $s$, the cows build their infinite-length code string by repeatedly applying $F$; each step therefore doubles the length of the current string.
Given the initial string and an index $N$, please help the cows compute the character at the $N$-th position within the infinite code string.
Given a string $s$, let $F(s)$ be s followed by s "rotated" one character to the right (in a right rotation, the last character of s rotates around and becomes the new first character).
Given an initial string $s$, the cows build their infinite-length code string by repeatedly applying $F$; each step therefore doubles the length of the current string.
Given the initial string and an index $N$, please help the cows compute the character at the $N$-th position within the infinite code string.
Input
The input consists of a single line containing a string followed by $N$. The string consists of at most $30$ uppercase characters, and $N≤10^{18}$. Note that $N$ may be too large to fit into a standard 32-bit integer, so you may want to use a 64-bit integer type (e.g., a "long long" in C/C++).
Output
Please output the $N$-th character of the infinite code built from the initial string. The first character is $N=1$.
Sample 1 Input
COW 8
Sample 1 Output
C
In this example, the initial string COW expands as follows:
COW -> COWWCO -> COWWCOOCOWWC 12345678