题目传送门
题目思路
数据范围就代表了不能模拟,因此考虑其实是切半分治
因为不满足的情况下前半部分是没用的。
在后面的那串时,第N个就是前面的第N-1-L/2个
AC代码
#include <iostream>
using namespace std;
int main()
{
string s;
long long n;
cin >> s >> n;
long long msize = s.size();
while (n > msize)
{
long long size = msize;
while (n > 2 * size)
size *= 2;
n -= (size + 1);
if (n == 0)
n = size;
}
cout << s[n-1];
return 0;
}