正经题解|秘密代码
2024-03-22 13:39:33
发布于:浙江
97阅读
0回复
0点赞
无限长的字符串是由一个小长度的字符串通过某种规律生成的,可以考虑使用递归还原。 第 次变换后在 位置的字符和题目要求的字符是对应字符。当 时,直接输出。否则就转换成在第 次变换所对应的字符。
#include <bits/stdc++.h>
using namespace std;
char s[39];
long long len;
void dfs(long long N, int h) {
if (h == 0) {
cout << s[N];
return;
}
long long tem = len*(1ll << (h - 1));
if (tem >= N) {
dfs(N, h - 1);
}
else {
if (N - tem == 1) {
dfs(tem, h - 1);
}
else {
dfs(N - tem - 1, h - 1);
}
}
}
int main() {
cin >> s + 1;
len = strlen(s + 1);
long long N;
cin >> N;
for (int i = 0;; i++) {
if (len * (1ll << i) >= N) {
dfs(N, i);
break;
}
}
return 0;
}
【时间复杂度】
【预计得分】
这里空空如也
有帮助,赞一个