蓝桥杯 - 猜字母

标题:猜字母

把abcd…s共19个字母组成的序列重复拼接106次,得到长度为2014的串。

接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。

得到的新串再进行删除奇数位置字母的动作。

如此下去,最后只剩下一个字母,请写出该字母。

答案是一个小写字母,请通过浏览器提交答案。

不要填写任何多余的内容。

代码1:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     string s="abcdefghigklmnopqrs";
 7     string str;
 8 
 9     for(int i=0;i<106;i++)
10     {
11         str+=s;
12     }
13 
14     while(str.length()>1)
15     {
16         for(int i=0;i<str.length();i++)
17         {
18             str.erase(i,1); //str的erase函数每次删除一个,长度-1,下一次删除就是原来字符串间隔一个 
19         }
20     }
21     cout<<str;
22     return 0;
23 }

代码2:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     char a[2020], s[20] = "abcdefghijklmnopqrs";
 7     for(int i = 0; i < 106; i++)
 8         strcat(a, s);
 9         
10     int k=0;
11     
12     while(k != 1)   //k是剩下的字符串的长度,当剩下的的字符串长度为1时,结束循环 
13     {
14         k = 0;  //每次循环k初始化为0 
15         for(int i = 0; a[i]; i++)
16         {
17             if(i % 2 == 1) //删除奇数,则要取奇数下标的数,下标从0开始,所以对2取余为1 
18                 a[k++] = a[i];
19         }
20 
21         a[k] = '\0';
22     }
23 
24     cout << a;
25 }

代码3:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     char s[2020];
 7     char a[]="abcdefghijklmnopqrs";
 8     for(int i=0;i<106;i++)
 9     {
10         strcat(s,a);
11     }
12     while(strlen(s)!=1)
13     {
14         int a=0,b=0;
15         while(s[a]=s[b++])
16         {
17             if((b+1)%2)
18             {
19                 a++;
20             } 
21         }
22     }
23     cout<<s;
24     return 0;
25 } 

 

posted @ 2019-03-20 15:09  WindSun  阅读(474)  评论(0编辑  收藏  举报
博客已停更,文章已转移,点击访问