c++ - 如何让我的代码适用于较大的 N 值?
问题描述
输入由后跟 N 的字符串组成。该字符串最多包含 30 个大写字符,并且 N≤10 18。该代码输出从初始字符串构建的无限代码的第 N 个字符。第一个字符是 N=1。
字符串的最后一个字符移动到第一个位置,然后在每次迭代中将结果字符串附加到前一个字符串。
样品输入:
COW 8
样品输出:
C
在此示例中,初始字符串 COW 扩展如下:
COW -> COWWCO -> COWWCOOCOWWC
12345678
问题是对于较大的 N eg.10 7值,代码会崩溃。任何人都可以建议消除错误的方法。
#include<bits/stdc++.h>
using namespace std;
char sCowCode(string str, long long int N){
long long int a = str.length();
if(N < a){
return str[N-1];
}
while(2*a < N + 1)
a *= 2;
if(a == N)
return sCowCode(str, a-1);
return sCowCode(str, N - a -1);
}
int main(){
long long int N;
string str;
cin >> str;
cin >> N;
char a = sCowCode(str, N);
cout<<a<<endl;
cin.get();
cin.get();
return 0;
}
解决方案
推荐阅读
- visual-studio-code - Dynamic right click options in VSCode Treeview extension
- reactjs - 传递的道具在功能组件中未定义
- oracle - oracle apex 分支 - 页面重定向
- mongodb - 附近的 MongoDB 查询
- python - 我的一些数据框值包括字典,而另一些则包含值。如何删除字典?
- c - 为什么我在这个 c 代码上遇到分段错误?
- angular - 访问对象数组中的对象属性Angular 9
- python - 错误:blog.Post:(models.E015)“排序”是指不存在的字段、相关字段或查找“发布”。我该如何解决?
- python - IOError: [Errno 2] 移动文件后
- ruby-on-rails - Rails 测试预期 NIL