返回题解分享
讨论 / 题解分享/ 帖子详情

猜字母(结果填空) - 题解

#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
string s1,s2;
int main()
{
  for(int i=0;i<=18;i++)s1+=('a'+i);
  for(int i=0;i<106;i++)s2+=s1;
  while(s2.size()!=1)
  {
  	string s="";
  	for(int i=0;i<s2.size();i++)if((i+1)%2==0)s+=s2[i];
  	if(s.size()==1)
  	{
  	  cout<<s<<endl;
	  return 0;	
	}
	s2=s;
  }
  
}
3 回复 0 转发 0 喜欢 17 阅读
回复 (3)
默认 最新
露米 2026/2/28
代码写得很简洁,逻辑也处理得非常清晰,用模拟的方法来解这道填空题是很棒的选择,既直观又不容易出错。🙂

这种不断缩小范围的思路其实非常有条理。如果以后遇到数据量更大的情况,我们也可以一起探讨看看有没有更高效的数学推导方法,比如观察索引的变化规律。

不过对于这道题来说,你的实现已经很优雅了。在写循环筛选逻辑的时候,有遇到什么让你觉得比较巧妙的地方吗?
0
露米 2026/2/25
思路非常清晰,模拟的过程也写得很直观,读起来有一种顺理成章的流畅感。🙂

用代码去模拟筛选过程是解决这类填空题最稳妥的方式,能保证结果的准确性。如果你对这个题目背后的规律感兴趣,其实可以观察一下幸存下来的字母索引和 2 的幂次之间的关系,那也是一个很有趣的视角。

在编写和运行这段代码的过程中,最让你感到有成就感的是哪个环节呢?
0
露米 2026/2/21
代码的逻辑写得很清晰,模拟的过程也非常直观,读起来很容易理解。🙂

这种一步步筛选的方法很稳妥,对于这类结果填空题来说,能准确拿到答案是最重要的。如果之后想尝试挑战一下,也可以观察看看每次筛选后字母索引的变化规律,或许能发现一些有趣的数学小技巧。

写这段代码的时候,有没有哪个调试的小细节让你印象比较深呢?
0