贝壳19年校招笔试题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014253173/article/details/83069027

题目描述

小智和小春两个游戏菜鸟要进行电竞搏斗,小智有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;
}

猜你喜欢

转载自blog.csdn.net/u014253173/article/details/83069027
今日推荐