你有幸搞到了2样东西:
1. 一个病毒的基因
2. 一个可以修改基因的装置;
于是你决定虐待病毒基因……
病毒基因是由A,C,T,G四种字符组成的字符串;
你可以做的事情:
INSERT X ST1 表示在原基因序列的第i位后插入一个基因段ST1(基因段也是由ATCG组成)
DEL X Y 表示从原基因序列的第X位置开始删除长度为Y的基因序列;
COPY 表示把原基因复制一份,长度翻倍,复制份接在原基因后面;
现在你进行了N次操作,希望知道最后基因的样子……
- 输入
-
第一行包含一个字符串ST,病毒原基因;
第二行包含了1个整数N,表示有N次虐待操作;
以下N行每行格式如题目描述中的一种,保证数据合法;
- 输出
-
输出经过N次虐待后病毒基因的样子;
- 样例输入
AATTCCG
3
INSERT 1 AATT
DEL 2 5
COPY
样例输出ATTCCGATTCCG
此题需要考虑下标,其实不难,但是就是很BT,C比 C++差的地方就在这里。
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char a[200002]; char b[100002]; char c[10]; int number,t; int i; int local; int begin,end; int length; int length1; scanf("%s",&a); scanf("%d",&number); for(t=0;t<number;t++) { length=strlen(a); scanf("%s",&c); if(c[0]=='I') { scanf("%d %s",&local,&b); length1=strlen(b); for(i=length+length1+1;i>=local+length1;i--) { a[i]=a[i-length1]; } for(i=0;i<length1;i++) { a[i+local]=b[i]; } } if(c[0]=='D') { scanf("%d %d",&begin,&end); length1=end; for(i=end+begin-1;a[i]!='\0';i++) { a[i-length1]=a[i]; } a[i-length1]='\0'; } if(c[0]=='C') { for(i=length;i<2*length;i++) { a[i]=a[i-length]; } a[i]='\0'; } } printf("%s",a); return 0; }