显示代码纯文本
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
bool array[26];
int main() {
freopen("MrBA1.in","r",stdin);
freopen("MrBA1.out","w",stdout);
int a,b,l,r;
char s[100];int len=0;
scanf("%d%d%d%d",&a,&b,&l,&r);
for(int i=0;i<a;i++) {
s[len++]=i+'a';
}
for(int i=0;i<b;i++) {
s[len++]=s[a-1];
}
for(int i=1;i<=a;i++) {
array[s[len-i]-'a']=true;
}
for(int i=0;i<a;i++) {
for(int j=0;j<26;j++) {
if(!array[j]) {
s[len++]='a'+j;
array[j]=true;
break;
}
}
}
for(int i=0;i<b;i++) {
s[len++]=s[a+b+a-1];
}
s[len]=0;
bool tag=true;
memset(array,0,sizeof(array));
if(r-l+1>=len) {
for(int i=0;i<len;i++) {
array[s[i]-'a']=true;
}
int ans=0;
for(int i=0;i<26;i++) {
if(array[i]) {
ans++;
}
}
printf("%d\n",ans);
fclose(stdin);
fclose(stdout);
return 0;
}
else if(r-l+1>len-(l%len==0?len:l%len)+1) {
tag=false;
}
if(l%len==0) {
l=len-1;
}
else {
l=l%len-1;
}
if(r%len==0) {
r=len-1;
}
else {
r=r%len-1;
}
if(tag) {
for(int i=l;i<=r;i++) {
array[s[i]-'a']=true;
}
}
else {
for(int i=r;i<len;i++) {
array[s[i]-'a']=true;
}
for(int i=0;i<=l;i++) {
array[s[i]-'a']=true;
}
}
int ans=0;
for(int i=0;i<26;i++) {
if(array[i]) {
ans++;
}
}
printf("%d\n",ans);
fclose(stdin);
fclose(stdout);
return 0;
}