Hdu 2073解題報告
阿新 • • 發佈:2019-02-08
Problem Description 甜甜從小就喜歡畫圖畫,最近他買了一支智慧畫筆,由於剛剛接觸,所以甜甜只會用它來畫直線,於是他就在平面直角座標系中畫出如下的圖形:
甜甜的好朋友蜜蜜發現上面的圖還是有點規則的,於是他問甜甜:在你畫的圖中,我給你兩個點,請你算一算連線兩點的折線長度(即沿折線走的路線長度)吧。
Input 第一個數是正整數N(≤100)。代表資料的組數。
每組資料由四個非負整陣列成x1,y1,x2,y2;所有的數都不會大於100。
Output 對於每組資料,輸出兩點(x1,y1),(x2,y2)之間的折線距離。注意輸出結果精確到小數點後3位。
Sample Input 5 0 0 0 1 0 0 1 0 2 3 3 1 99 99 9 9 5 5 5 5
Sample Output 1.000 2.414 10.646 54985.047 0.000
對於這題就是模擬加找規律;
程式碼:
#include <iostream> #include <cmath> using namespace std; double s[200]; void ini() { s[0] = 0; // (0,0) 的值當做s[0] s[1] = 1; // (0,1) 的值當做s[1] double sum = 0; for (int i = 2;i <200;++ i ) s[i] = s[i-1] + sqrt(2+0.0)*(i-1) + sqrt((i-1)*(i-1)+i*i +0.0); } int main() { ini(); int x1,x2,y1,y2,n; cin >> n; while (n--) { int d1,d2; cin >> x1 >> y1 >> x2 >> y2; d1 = x1 + y1; d2 = x2 + y2; printf("%.3lf\n",fabs(s[d1] - s[d2] + (x1 - x2)*sqrt(2 + 0.0))); } return 0; }