# 猜字母 把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。 接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。 得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。 ## aop ### before ```cpp #include #include using namespace std; ``` ### after ```cpp ``` ## 答案 ```cpp int main() { vector vc1; int i; for (i = 0; i < 2014; i++) vc1.push_back('a' + (i % 19)); while (vc1.size() != 1) { vector vc2; cout << vc1.size() << endl; for (i = 1; i < vc1.size(); i += 2) vc2.push_back(vc1[i]); vc1.assign(vc2.begin(), vc2.end()); cout << vc1.size() << endl; } cout << vc1[0] << endl; return 0; } ``` ## 选项 ### A ```cpp int main() { vector vc1; int i; for (i = 0; i < 2014; i++) vc1.push_back('a' + (i % 19)); while (vc1.size() != 1) { vector vc2; cout << vc1.size() << endl; for (i = 0; i < vc1.size(); i++) vc2.push_back(vc1[i]); vc1.assign(vc2.begin(), vc2.end()); cout << vc1.size() << endl; } cout << vc1[0] << endl; return 0; } ``` ### B ```cpp int main() { vector vc1; int i; for (i = 0; i < 2014; i++) vc1.push_back('a' + (i % 19)); while (vc1.size() != 1) { vector vc2; cout << vc1.size() << endl; for (i = 0; i < vc1.size(); i += 1) vc2.push_back(vc1[i]); vc1.assign(vc2.begin(), vc2.end()); cout << vc1.size() << endl; } cout << vc1[0] << endl; return 0; } ``` ### C ```cpp int main() { vector vc1; int i; for (i = 0; i < 2014; i++) vc1.push_back('a' + (i % 19)); while (vc1.size() != 1) { vector vc2; cout << vc1.size() << endl; for (i = 0; i < vc1.size(); i += 2) vc2.push_back(vc1[i]); vc1.assign(vc2.begin(), vc2.end()); cout << vc1.size() << endl; } cout << vc1[0] << endl; return 0; } ```