题目链接

题解:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<cmath>
#include<queue>
#define ll long long
#define pr make_pair
#define pb push_back
using namespace std;
const int inf=0x3f3f3f3f;
const ll lnf=0x3f3f3f3f3f3f3f3f;
const double dnf=1e15;
const int mod=1e9+7;
const double eps=1e-8;
const int maxn=5000100;
char str[maxn];
int main(void)
{
    int n,ans=0;
    scanf("%s",str+1);
    n=strlen(str+1);
    for(int i=1;i<=n;)
    {
        int j=i,k=i+1;
        while(k<=n&&str[j]<=str[k])
        {
            if(str[j]<str[k]) j=i;
            else j++;
            k++;
        }
        while(i<=j)
        {
            ans^=i+k-j-1;
            i+=k-j;
        }
    }
    printf("%d\n",ans);
    return 0;
}