如题~
把abcd…s共19个字母组成的序列重复拼接106次,得到长度为2014的串。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数
位置的字母。
得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。
开始我想的是能不能直接除,如果把2014个字符换成数字的话,刚开始就把所有的奇数给去了,然后才是偶数。
那么,去了一次之后,2在前面,2 4 6 8 10 12 14 16 18 20
再去一次 4 8 12 16 20
再去一次 8 16……
后面每个开头的数都是2的n次方,然后我想试试来着, 结果发现能力不够。
A计划,×失败
B计划,√开始
开始编程:
#include<stdio.h>
int main()
{
char letter[2014];
int i,j='a',k;
for(i=0;i<2014;i++)//先把数组全部重置为字符
{
letter[i]=j;
j=j+1;
if(j>'s') j='a';//到了s之后,下一个重置为a
}
while(k!=1)
{
k=0;
for(i=0;letter[i];i++)
{
if(i%2==1)
letter[k++]=letter[i];//用偶数位的数把奇数位代替了
}
letter[k]='\0';//组成一个新的数组 a;
}
printf("%c",letter[0]);
return 0;
}
中间数组最后的\0给忘了手动黑脸。debug好久
答案是:q