题目描述
FJ在沙盘上写了这样一些字符串:
A1 = “A” A2 = “ABA” A3 = “ABACABA” A4 ==“ABACABADABACABA” …
你能找出其中的规律并写所有的数列AN吗?
输入
仅有一个数:N ≤ 26。
输出
输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
ABACABA
解析:小规律已经在题面红色标出来了噢,这题利用C++string类十分方便,C的话要利用两个数组交替拷贝。
C:
#include <stdio.h>
#include <string.h>
char a[1005],b[1005];//数组开大一点,不然会越界
int main()
{
int i,n,len;
char biaoji;//表示中心添加的字母
while(~scanf("%d",&n)){
memset(a,'\0',sizeof(a));//清空一下
memset(a,'\0',sizeof(a));
a[0]='A';
biaoji='A';
for(i=2;i<=n;i++){
strcat(b,a);//strcat函数,将a拼接到b后面
len=strlen(b);//确定添加中心字母位置
biaoji++;//中心要添加的字母加一,变成下一个字母
b[len]=biaoji;//
strcat(b,a);
memset(a,'\0',sizeof(a)); //清空,然后将b拷贝过来
strcpy(a,b);
memset(b,'\0',sizeof(b));//清空,等待下次拷贝
}
printf("%s\n",a);
}
return 0;
}
C++:
#include <iostream>
using namespace std;
int main()
{
int n;
string a,b;
char c; //添加的中心字母
while(cin>>n){
a='A',b='A',c='B';//初始化噢
n--;//因为初始化为'A',n减一次。
while(n--){
b=a+c+a;//string类直接拼起来
a=b;//b拷贝到a
c++;//中心添加的字母加一,变成下一次字母
}
cout<<b<<endl;
}
return 0;
}