正经题解|秘密代码
2024-03-22 13:39:33
发布于:浙江
244阅读
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;
}
【时间复杂度】
【预计得分】
全部评论 2
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; } if (tem >= N) { dfs(N, h - 1); } else { if (N - tem == 1) { dfs(tem, h - 1); } else { dfs(N - tem - 1, h - 1); }一点看不懂,帮我看下
2025-09-26 来自 江苏
0AC君的TJ居然没人看
2025-06-23 来自 上海
0












有帮助,赞一个