求助
查看原帖
求助
1071380
baba666666楼主2024/1/15 11:19

过了6个,剩下四个都是紫色。 有没有大佬指点一下。

#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
#pragma warning(disable:4996);

void you(char* s1, long long int x1)
{
    long long 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, long long int x1)
{
    long long 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)
{
    long long 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;
    long long int len1 = strlen(s);
    for (int i = 0; i < n; i++)
    {
        long long int x;
        char a[10];
        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;
}
2024/1/15 11:19
加载中...