版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}