现在的位置: 首页 > 综合 > 正文

1393 虐待病毒基因

2012年12月25日 ⁄ 综合 ⁄ 共 1018字 ⁄ 字号 评论关闭
描述

你有幸搞到了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;
}

抱歉!评论已关闭.