题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2073
题目描述:
甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形:
甜甜的好朋友蜜蜜发现上面的图还是有点规则的,于是他问甜甜:在你画的图中,我给你两个点,请你算一算连接两点的折线长度(即沿折线走的路线长度)吧。
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<cstdio>
#include<cmath>
using namespace std;
double sum[205][205];
int px, py, nx, ny;
double dis(double x1, double y1, double x2, double y2) {
return sqrt(pow((x1 - x2), 2) + pow((y1 - y2), 2));
}
int main(void) {
px = 0, py = 0;
for (int i = 0; i < 205; i++) {
nx = 0, ny = i;
for (int j = 0; j <= i; j++) {
sum[nx][ny] = sum[px][py] + dis(px, py, nx, ny);
px = nx;
py = ny;
nx++;
ny--;
}
}
int N;
scanf("%d", &N);
while (N--) {
scanf("%d %d %d %d", &nx, &ny, &px, &py);
double ans = fabs(sum[nx][ny] - sum[px][py]);
printf("%.3lf\n", ans);
}
return 0;
}