题解:
#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;
}