貝殼19年校招筆試題
阿新 • • 發佈:2018-12-30
題目描述
小智和小春兩個遊戲菜鳥要進行電競搏鬥,小智有X點HP,每次攻擊會使對方丟失A點生命值,每次攻擊完後需要冷卻C秒,小春有Y點HP,每次攻擊會使對方丟失B點生命值,每次攻擊完後需要冷卻D秒,玩家HP小於等於0時便死亡,若小智最終存活,則輸出XIAOZHI,若小春最終存活,則輸出XIAOCHUN,若兩者一起死亡,則輸出TIE。
輸入
第一行一個T,表示資料組數。(1<=T<=100)
接下來T行,每行六個正整數,X,A,C,Y,B,D(均小於等於10^9)
輸出
共T行,每行一個答案。
樣例輸入
4
1 2 3 4 5 6
128 39 20 109 100 92
1000 10 39 33 333 39
101 10 10 101 20 20
樣例輸出
XIAOCHUN
XIAOZHI
TIE
TIE
Hint
對於第三組資料,在雙方各攻擊3次後,小智還剩1滴血,小春還剩3滴血,下一次他們會同時攻擊對方,同時死亡。
題解:
直接進行模擬, 最開始寫的時候邏輯寫反了。
按照冷卻時間模擬攻擊,每次攻擊減去相應的生命值。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cmath>
using namespace std;
int main()
{
int t,x,a,c,y,b,d;
cin>>t;
while(t--){
cin>>x>>a>>c>>y>>b>>d;
for(int i=0,j=0; ;){
if(c < d){ //判斷冷卻時間的大小
y = y - a;
if(i >= j*d){ //當前時間和較大冷卻時間的關係
x = x - b;
j++;
}
i+=c; //以較小的冷卻時間為間隔
}else{
x = x - b;
if(i >= j*c){
y = y - a;
j++;
}
i+=d;
}
if(x<=0 && y<=0){
cout<<"TIE"<<endl;
break;
}
else if(x<=0 && y>0){
cout<<"XIAOCHUN"<<endl;
break;
}else if(x>0 && y<=0){
cout<<"XIAOZHI"<<endl;
break;
}
}
}
return 0;
}