1. 程式人生 > >CSU OJ 2148 夢皮神

CSU OJ 2148 夢皮神

pan script code lose tac desc bsp color else

Description

Wells最近經常做一些有皮神出現的夢。

在這一次夢中Wells把皮神(Pikachu)弄丟了,Wells在一個正 N 邊形區域的中心開始自閉,Wells想找回皮神,同時皮神也在嘗試找回Wells。

技術分享圖片

皮神為了確保不會找不到Wells,皮神在正 NN 邊形最外圍的每個頂點上都放置了一個分身。分身按照順時針方向,用 1...N1...N 標號,每個分身 ii 都會朝 i+1i+1 號分身以一個固定的速度移動,移動方向會隨著 i+1i+1 位置變化而變化,一直到某個分身在運動時視線中出現Wells,皮神才會停下來,並撲上去給Wells一個Warming的抱抱(還可以順便電幾下……)。

現在,皮神想知道,最糟糕的情況下她需要多少時間才能夠找回Wells。

Input

多組數據,組數不超過 10001000 組

對於每組數據給出一行,每行三個整數 N,A,VN,A,V 分別表示正多邊形區域的邊數,正多邊形區域的邊長, 皮神的每個分身移動的速度

N<=300,A<=400000,V<=10000N<=300,A<=400000,V<=10000

Output

對於每組數據輸出一行,每行包含一個實數,表示最壞情況下皮神尋找的時間,保留小數點後 55 位。

當答案的絕對誤差或者相對誤差小於 0.010.01 % ,即10?410?4 被認為與答案相同。

ps:不必糾結單位的問題

Sample Input

3 10 5
4 20 8

Sample Output

1.33333
2.50000
題解:這是一個追擊問題,圖形由大道小,直到為一個點,形狀不變;可以考慮前一個追後一個,將速度分解:
參考代碼:
技術分享圖片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 using namespace std;
 6 #define PI acos(-1)
 7 int main()
 8 {
 9     int N;
10     double A,V,X;
11 while(scanf("%d%lf%lf",&N,&A,&V)!=EOF) 12 { 13 X=PI*(N-2)/(2.0*N); 14 if(N==3) printf("%.5lf\n",A/(2.0*V*cos(X)*cos(X))); 15 else printf("%.5lf\n",A/(2.0*V*cos(X)*cos(X))); 16 } 17 18 return 0; 19 }
View Code

CSU OJ 2148 夢皮神