过了6个,剩下4个都是紫色。不知道为什么。
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
#pragma warning(disable:4996);
void you(char* s1, int x1)
{
int len = strlen(s1);
char* tp = (char*)malloc(sizeof(char) * x1);
strncpy(tp, s1 + len - x1, x1);
memmove(s1 + x1, s1, len - x1);
strncpy(s1, tp, x1);
free(tp);
}
void zuo(char* s1, int x1)
{
int len = strlen(s1);
char* tp = (char*)malloc(sizeof(char) * x1);
strncpy(tp, s1, x1);
memmove(s1, s1 + x1, len - x1);
strncpy(s1 + len - x1, tp, x1);
free(tp);
}
void fan(char* s1)
{
int len = strlen(s1);
for (int i = 0; i < len / 2; i++)
{
char tp = s1[i];
s1[i] = s1[len - i - 1];
s1[len - i - 1] = tp;
}
}
int main(void)
{
char* s = (char*)malloc(sizeof(char) * 100000001);
long long int n;
long long int ans = 0, zj = 0;
cin >> s >> n;
int len1 = strlen(s);
for (int i = 0; i < n; i++)
{
int x;
char a[5];
cin >> a;
if (strcmp(a, ">") == 0)
{
cin >> x;
if (ans % 2 == 0) zj += x;
else zj -= x;
}
else if (strcmp(a, "<") == 0)
{
cin >> x;
if (ans % 2 == 1) zj += x;
else zj -= x;
}
else if (strcmp(a, "rev") == 0)
{
ans++;
}
zj = zj % len1;
}
if (zj > 0) you(s, zj % len1);
else zuo(s, zj % len1);
if (ans % 2 == 1) fan(s);
cout << s;
return 0;
}