1. 程式人生 > >藍橋杯 歷屆試題 猜字母

藍橋杯 歷屆試題 猜字母

把abcd...s共19個字母組成的序列重複拼接106次,得到長度為2014的串。

接下來刪除第1個字母(即開頭的字母a),以及第3個,第5個等所有奇數位置的字母。

得到的新串再進行刪除奇數位置字母的動作。如此下去,最後只剩下一個字母,請寫出該字母。

答案是一個小寫字母,請通過瀏覽器提交答案。不要填寫任何多餘的內容。

思路:

 刪除奇數,我們就取偶數的字母,只是要注意會下標和個數不同,下標為0時是第一個,我們要取偶數就要取下標%2==1的字母

直至字串長度為1停止

程式碼:

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
	char a[2020],s[20]="abcdefghijklmnopqrs";
	int i,len,k=0;
	for (i=0;i<106;i++)
	 strcat(a,s);
	while (k!=1)
	{
		k=0;
	 for (i=0;a[i];i++)
	 {
	 	if (i%2==1)//刪除奇數,則要取奇數下標的數 
	 	 a[k++]=a[i];
	 }
	 a[k]='\0';
   }
   cout<<a;
}