绝地求生

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

问题描述

zbt最近喜欢上了《绝地求生》(pubg)游戏,pubg这个游戏有一种跑毒机制,每次会产生一个圆形的安全区,玩家需要从他的当前位置在一定时间内进入安全区,否则游戏就会失败。
zbt经常死于跑毒,于是他想设计一个程序来判断他是不是能够跑进安全区,如果不能他就直接退出游戏了,如果zbt的血量刚好到达安全区,依旧存活。
zbt现在有100点血和一辆载具,这辆载具有a点油量,每秒需要消耗b点油量前进c米,当载具没有油的时候他只能选择跑步前进,他跑步的话每秒可以跑d米,在毒里面他每秒会受到e点伤害(生命值每时每刻都在减少)。(题目保证载具的速度一定大于等于人跑步的速度)

输入描述

输入包括两行。第一行有5个数,zbt现在的位置x,y;安全区的圆心位置 x1,y1; 安全区的半径r。第二行包括5个数,载具的油量a,每秒消耗的油量为b,载具速度为c,跑步的速度为d,在毒里每秒受到的伤害为e。

输出描述

输出包括一行如果zbt成功进入安全区,输出到达的时间,保留3位小数,否则输出"GG"(没有双引号)。
数据范围:0<=a,b<=1000 , 0<=d<=c<=1000 , -1000<=x,x1,y,y1<=1000 , 0< r <=2000.

样例输入

1 1 10 10 1
1 1 1 1 90

样例输出

GG

#include<stdio.h>
#include<math.h>
int main()
{
	double a, b, c, d, e,tmax;
	double x, y, x1, y1, r,t;
	double s1, d1;
	scanf("%lf%lf%lf%lf%lf",&x,&y,&x1,&y1,&r);
	scanf("%lf%lf%lf%lf%lf",&a,&b,&c,&d,&e);
	d1 = sqrt((x - x1)*(x - x1) + (y - y1)*(y - y1));
	d1 = d1 - r;
	s1 = a / b*c;
	tmax = 100 / e;
	if (d1 <= 0)
		printf("0.000");
	else
	{
	
		if (s1 >= d1)
			t = d1 / c;
		else
		{
			d1 = d1 - s1;
			t = a / b + d1 / d;
		}
		if (t > tmax)
			printf("GG");
		else
			printf("%.3lf",t);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Nicht_sehen/article/details/84169945