问题描述
把 abcd…s 共 19 个字母组成的序列重复拼接 106 次,得到长度为 2014 的串。
接下来删除第 1 个字母(即开头的字母a),以及第 3 个,第 5 个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。
如此下去,最后只剩下一个字母,请写出该字母。
答案提交
答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。
答案:q
题解一:
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char str[2020], temp[20] = "abcdefghijklmnopqrs";
for (int i = 0; i < 106; i ++) strcat(str, temp);
int k;
while(strlen(str) != 1)
{
k = 0;
for (int i = 0; str[i]; i ++)
{
if(i % 2 == 1) str[k ++] = str[i]; // 由于下标从 0 开始,所以要保留下标为奇数的字母
}
str[k] = '\0';
}
cout << str << endl;
return 0;
}
题解二:
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
string temp = "abcdefghijklmnopqrs";
string str;
for(int i = 0; i < 106; i ++) str += temp;
while(str.length() > 1)
{
for(int i = 0; i < str.length(); i ++) str.erase(i, 1); // 以下标 i 为起点,删除一个字母
}
cout << str << endl;
return 0;
}