CSU Game Rank

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

猜你喜欢

转载自blog.csdn.net/CSUstudent007/article/details/81252022