#include <bits/stdc++.h>
typedef long long LL;
using namespace std;
string s1;
LL pos;
int main()
{
cin >> s1 >> pos;
LL cd = s1.length();
s1 = " " + s1;
LL cs = log(pos / cd) / log(2) + 1;
while(pos > cd)
{
LL l = cd * (1ll << cs);
while(l >= pos) cs--, l = cd * (1ll << cs);
pos -= l;
pos--;
if(pos == 0) pos = 1; // 这里写错了
}
cout << s1[pos];
return 0;
}
当pos等于0时,应该是前面那一串中的最后一个字符,即pos = l(指应该是变量l,而这段代码中写的数字1),但是代码写太快,写错了,交上去发现过了。随便的一个数据比如:COW 4
就可以卡掉。