1. 程式人生 > >貝殼19年校招筆試題

貝殼19年校招筆試題

題目描述

小智和小春兩個遊戲菜鳥要進行電競搏鬥,小智有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; }