自行食用
2025-07-14 14:42:01
发布于:浙江
21阅读
0回复
0点赞
#include <iostream>
#include <vector>
using namespace std;
// 计算S(k)的长度
long long getLength(int k) {
if (k == 0) return 3;
return 2 * getLength(k-1) + k + 3;
}
// 查找第N个字符
char findChar(int N, int k) {
if (k == 0) {
if (N == 1) return 'm';
return 'o'; // N=2或3
}
long long len_k_1 = getLength(k-1);
if (N <= len_k_1) {
return findChar(N, k-1);
}
else if (N == len_k_1 + 1) {
return 'm';
}
else if (N <= len_k_1 + 1 + (k + 2)) {
return 'o';
}
else {
return findChar(N - (len_k_1 + 1 + (k + 2)), k-1);
}
}
int main() {
int N;
cin >> N;
// 找到最小的k使得S(k)长度≥N
int k = 0;
while (getLength(k) < N) {
k++;
}
cout << findChar(N, k) << endl;
return 0;
}
这里空空如也
有帮助,赞一个