程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> NYOJ 618 追擊

NYOJ 618 追擊

編輯:C++入門知識

追擊

時間限制:1000 ms | 內存限制:65535 KB 難度:2
描述
由於洛丹倫南部的獸人暴動,不得不使人類聯盟采取最後的手段進行鎮壓。國王泰瑞納斯派出了兩位最優秀的聖騎士以遏制獸人的不斷騷擾。一位是白銀之手的領袖:光明使者烏瑟爾,一位是他的兒子:阿爾薩斯王子。希望依靠他們的力量終結這次王國的危機。 阿爾薩斯的部隊來到了位於奧特蘭克山脈的斯坦恩布萊德,在這裡他得知了一個不好的消息。村莊裡的一名兒童小提米被殘忍的豺狼人抓走了。為了自己的子民,阿爾薩斯決定帶著自己的部隊去營救小提米。 豺狼人帶著小提米從(0,0)處開始沿著路徑y=kx以速度v逃逸,阿爾薩斯的部隊位於(a,b),那麼為了使得追擊距離最短並且能正好追上豺狼人,阿爾薩斯的部隊應該采取怎樣的速度呢?
輸入
輸入包括多行數據,每行數據有四個數k,a,b,v,輸入以文件結尾結束。注意,0 輸出
每行輸出一個數,表示阿爾薩斯的部隊的速度。如果不存在這樣的速度,輸出一行Impossible。輸出的數保留三位小數。
樣例輸入
1 1 1 1
2 2 2 2
樣例輸出
0.000
0.667
簡單的數學題!
AC碼:
#include
#include
int main()
{
	double k,a,b,v,d,V;
	while(scanf("%lf %lf %lf %lf",&k,&a,&b,&v)!=EOF)
	{
		d=fabs(k*a-b)/sqrt(k*k+1);  // 點到直線距離公式
		V=d*v/sqrt(a*a+b*b-d*d);    // 推導出來的求阿爾薩斯部隊的速度公式
		printf("%.3f\n",V);
	}
	return 0;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved