Liverpoool @ 2023-02-02 16:03:08
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
string s;
cin >> s;
long long n;
cin >> n;
long long i = n;
for (int factor = log2(n / s.length()) + 1; factor > 0; factor--)
{
if (i == s.length() * pow(2, factor - 1) + 1)
{
i = s.length() * pow(2, factor - 1);
}
else if (i > s.length() * pow(2, factor - 1) + 1)
{
i = i - s.length() * pow(2, factor - 1) - 1;
}
}
cout << s[i - 1];
return 0;
}
测试点2 输入:ABCDEFGHIJKLMNOPQRSTUVWXYZ 99999999999999999 输出:D
by lmsjyzj @ 2023-04-07 03:40:18
醉了,我的也是,正确答案是D,我在自己机器上跑出来的答案也是D,但是在洛谷跑出来的答案是G.
by lmsjyzj @ 2023-04-07 03:53:01
@Liverpoool 我知道我自己的代码哪里出问题了, 就是要自己写pow函数,不能用机器的pow函数。因为机器pow函数输出的是double会有误差
by Liverpoool @ 2023-08-30 15:48:05
@lmsjyzj 哦哦好的 才看到 感谢