zcmu 1376: 天天酷跑
阿新 • • 發佈:2018-11-14
1376: 天天酷跑
Time Limit: 1 Sec Memory Limit: 128 MB
Description
在天天酷跑這個遊戲中,玩家的目的是為了收集更多的分數和奔跑更遠的距離。能增加分數的道具一共有4種,分別是金幣銀幣銅幣和動物頭像。其中金幣能增加5分,銀幣能增加3分,銅幣1分,動物頭像則能增加10分。天天酷跑中還有一種叫做點石成金的道具,可以在接下來10秒內將獲得的銀幣銅幣變成金幣。假設玩家在1秒內只能獲得一樣道具(包括得分的道具),且若玩家處於點石成金的狀態下獲得了點石成金道具,則會重新整理點石成金的持續時間(既點石成金的持續時間又變成了10秒),給定接下來n秒內每秒出現的道具,計算出經過n秒後玩家能獲得多少分數。
Input
多組測試資料,每組測試資料的第一行為一個正整數n(1<=n<=10^6)。第二行為n個字元('A’表示金幣,'B’表示銀幣,'C’表示銅幣,'D’表示動物頭像,'E’點石成金)。
Output
對於每組測試資料輸出一個整數代表n秒後獲得的分數。
Sample Input
5
ABCDE
5
EDCBA
Sample Output
19
25
HINT
Source
【分析】
enmmmm感覺理清思路之後,其實還是不復雜的
【程式碼】
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
char y[1000005];
scanf("%s",y);
double z=0,x=0;//x是點石成金的時間
for(int i=0;i<n;i++)
{
switch(y[i])
{
case 'A':if(x==0)z+=5;else {x--;z+=5;}break;
case 'B':if(x==0)z+=3;else {x--;z+=5;}break;
case 'C':if(x==0)z+=1;else {x--;z+=5;}break;
case 'D':if(x==0)z+=10;else {x--;z+=10;}break;
case 'E':x=10;break;
}
}
printf("%.0lf\n",z);
}
return 0;
}