1393 바이러스 학대 유전자

1938 단어 cinsertBT
묘사 하 다.
당신 은 운 좋게 두 가지 물건 을 구 했 습 니 다.
1. 바이러스 의 유전자
2. 유전 자 를 수정 할 수 있 는 장치;
그래서 당신 은 바이러스 유전 자 를 학대 하기 로 결 정 했 습 니 다.
바이러스 유전 자 는 A, C, T, G 네 가지 문자 로 구 성 된 문자열 이다.
당신 이 할 수 있 는 일:
INSERT X ST1 은 기 존 유전자 서열 의 i 위 에 유전자 세그먼트 ST1 을 삽입 한 다 는 뜻 (유전자 세그먼트 도 ATCG 로 구성)
DEL X Y 는 기 존 유전자 서열 의 X 번 째 위치 부터 Y 길이 의 유전자 서열 을 삭제 한 다 는 뜻 이다.
COPY 는 원 유전 자 를 1 부 복제 해 길이 가 배가 되 고, 복제 분 을 원 유전자 뒤에 연결한다 고 밝 혔 다.
지금 당신 은 N 번 의 조작 을 했 습 니 다. 마지막 유전자 의 모습 을 알 고 싶 습 니 다.
입력
첫 번 째 줄 에는 문자열 ST, 바이러스 유전자 가 포함 되 어 있 습 니 다.
두 번 째 줄 에는 N 차 학대 조작 이 있 음 을 나타 내 는 정수 N 이 1 개 포함 되 어 있다.
다음 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;
}

좋은 웹페이지 즐겨찾기