# [USACO17JAN]Secret Cow Code秘密奶牛码（洛谷 P3612）

## [USACO17JAN]Secret Cow Code秘密奶牛码

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 ss, let F(s)F(s) be ss followed by ss “rotated” one character to the right (in a right rotation, the last character of ss rotates around and becomes the new first character). Given an initial string ss, the cows build their infinite-length code string by repeatedly applying FF; each step therefore doubles the length of the current string.

Given the initial string and an index NN, please help the cows compute the character at the NNth position within the infinite code string.

The input consists of a single line containing a string followed by NN. The string consists of at most 30 uppercase characters, and N \leq 10^{18}N≤10
18
.

Note that NN 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++).

18

Please output the NNth character of the infinite code built from the initial string. The first character is N=1N=1.

COW 8

C

COW------->CO W W CO--------->COWWC O O COWWC

#include<bits/stdc++.h>
#define LL long long
#define pa pair<int,int>
#define lson k<<1
#define rson k<<1|1
#define N 500100
#define M 200010
using namespace std;
const LL mod=1e9+7;
string ss;
LL n;
int main(){
cin>>ss>>n;
LL len=(LL)ss.length();
while(len<n){
LL s=len;
while(s*2<n) s*=2;
n-=(s+1);//减去前面的一半加一；
if(n==0) n=s;//可以画图模拟一下
}
cout<<ss[n-1]<<endl;
return 0;
}


©️2019 CSDN 皮肤主题: 黑客帝国 设计师: 上身试试