原题:https://vjudge.net/problem/1573372/origin
题解:
模拟题,注意看清题,一个是只有6级以上连胜才有奖励,不然没有;还有一个是不能用rank作为变量名,因为std中定义了这个rank变量。
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#define rank ranks
using namespace std;
const int maxn = 100000;
char str[maxn];
int star,rank;
int main()
{
while(~scanf("%s",str))
{
star=0;
rank=25;
int len = strlen(str);
int acount=0;
for(int i=0;i<len;i++)
{
while(str[i]=='W')
{
i++;
acount++;
star++;
if(acount >= 3&& rank >=6) star++;
if(star>2&&(rank>=21&&rank<=25))
{
rank--;
star=star-2;
}
else if(star>3&&(rank<=20&&rank>=16))
{
rank--;
star=star-3;
}
else if(star>4&&(rank<=15&&rank>=11))
{
rank--;
star=star-4;
}
else if(star>5&&(rank<=10&&rank>=1))
{
rank--;
star=star-5;
}
}
acount = 0;
if((rank>=21&&rank<=25)||rank<=0||(rank==20&&star==0))
{
//do nothing
}
else
{
star--;
if(star<0)
{
if(rank<=19&&rank>=15)
{
rank++;
star=3+star;
}
else if(rank<=14&&rank>=10)
{
rank++;
star=4+star;
}
else if (rank<=9&&rank>=1)
{
rank++;
star=5+star;
}
}
}
}
if(rank>0)
printf("%d\n",rank);
else cout<<"Legend"<<endl;
}
}