代码1,只过了1个点,我觉得这个反而应该快一点才对啊
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
long long n, len;
string str;
cin >> str >> n;
len = str.length();
while (len < n)
len = len << 1;
while (n > str.length())
{
len = len >> 1;
if (n == len + 1)
n = len;
else
n = n - 1 - len;
}
cout << str[n - 1] << "\n";
return 0;
}
代码2,秒过
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
long long n, len;
string str;
cin >> str >> n;
while (n > str.length())
{
len = str.length();
while (len < n)
len = (len << 1);
len = len >> 1;
if (n == len + 1)
n = len;
else
n = n - 1 - len;
}
cout << str[n - 1] << "\n";
return 0;
}