#P911. 我们未能击穿敌人的装甲!
我们未能击穿敌人的装甲!
题目背景
我们来模拟一款垃圾坦克游戏的击穿判定吧
给定炮弹类型,穿透力,炮弹口径,敌方装甲的垂直厚度,和炮弹与装甲的角度,判断能不能击穿敌人的装甲!
题目描述
1.坦克炮弹有6种:AP,APCR,APFSDS,HEAT,HE,HESH
2.坦克炮弹打在装甲上是有角度的,角度和是否击穿的关系是很大的
3.坦克炮弹是有转正效应的,也就是说:
AP弹的转正是5度,APCR和APFSDS弹的转正是2度,HEAT,HE,HESH没有转正 当一发炮弹打中敌人装甲的时候,假设角度是alpha,转正度数是omega,那么实际上我们计算的时候可以认为炮弹和敌人装甲的实际角度是max( 0 , alpha - omega )
4.当炮弹口径比垂直装甲厚度的两倍还大的时候,炮弹转正会x2
当炮弹口径比垂直装甲厚度的三倍还大的时候,炮弹转正会x3
5.计算穿甲能力的时候,我们直接按照算出来的实际角度(考虑转正),算出来炮弹实际要击穿多厚的装甲,然后判断是否击穿即可
6.当AP,APCR,APFSDS在实际角度(计算转正后)大于等于70度的时候会发生跳弹,HEAT在大于等于85度的时候会发生跳弹,跳弹则认为无法击穿,HE,HESH永不跳弹
如图是发生了一次跳弹
7.炮弹穿透力有上下25%的浮动,也就是说穿透力最高是给定的穿透力x125%,最低是给定的穿透力x75%,这个是一个随机数,本题只需判断:
(1).一定可以击穿
(2).概率可以击穿
(3).一定无法击穿
8.为了简化题目,不考虑间隙装甲,反应装甲,人肉装甲以及负转正
输入格式
第一行两个字符串,字符串不包含空格和tab,表示两个坦克的名字
第二行,一个字符串表示炮弹类型,然后四个实数表示:炮弹的穿透力,炮弹和装甲的角度(角度是给的入射角,即弹道和法线的夹角),炮弹的口径,垂直装甲的厚度
输出格式
输出一行一个字符串表示:
如果一定可以击穿,"Penetration!"
如果可能可以击穿,"Server is important~"
如果一定不能击穿,"We didn't penetrate their armor!"
输出不包含“”符号
输入输出样例
输入 #1
E50Ausf.M E50Ausf.M
APCR 270 16 105 185
输出 #1
Penetration!
输入 #2
JagdpanzerE100 obj.430U
AP 299 47.1 170 195
输出 #2
Server is important~
输入 #3
G.W.Tiger obj430
HE 53 66.1 210 16
输出 #3
Penetration!
输入 #4
strv103b BC25t
APCR 350 72.1 105 60
输出 #4
We didn't penetrate their armor!
说明/提示
三角函数公式:cos(角度 / 180.0 * 3.14159265); sin一样 样例解释1:
可以看到原始角度是16度,炮弹是APCR,有2度转正,转正之后实际角度变成了16-2=14度,垂直装甲厚度185mm,等效装甲厚度190.7mm,炮弹最低穿深为270x0.75=202.5mm,所以一定可以击穿
样例解释2:
可以看到原始角度是47.1度,炮弹是AP,有5度转正,转正之后实际角度变成了47.1-5=42.1度,垂直装甲厚度195mm,等效装甲厚度263mm,炮弹最低穿深为299x0.75=224.25mm,最高穿深为299x1.25=373.75mm,所以可能击穿
样例解释3:
可以看到原始角度是66.1度,炮弹是HE,没有转正,垂直装甲厚度16mm,等效装甲厚度39.5mm,炮弹最低穿深为53x0.75=39.75mm,所以一定可以击穿
样例解释4:
可以看到原始角度是72.1度,炮弹是APCR,有2度转正,转正后实际角度为72.1-2=70.1度,垂直装甲厚度60mm,等效装甲厚度175.9mm,但是由于转正后超过了70度,会发生跳弹,所以无法击穿
读入的所有数在[1,420]内
数据保证浮点误差不超过0.1