[恢]hdu 2073

2011-12-15 03:18:50

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2073

题意:中文。。。

mark:用一种比较奇怪的写法来写的。

代码:

# include <stdio.h>
# include <math.h>


typedef struct PT{
int x, y ;
}PT ;


int cmp(const void *a, const void *b)
{
PT *p = (PT*)a, *q = (PT*)b ;
if (p->x + p->y != q->x + q->y)
return (p->x + p->y) - (q->x + q->y) ;
return p->x - q->x ;
}


double dist(PT p, PT q)
{
double x = p.x - q.x ;
double y = p.y - q.y ;
return sqrt(x*x + y*y) ;
}


PT next(PT p)
{
PT rtn ;
if (p.y == 0) rtn.x = 0, rtn.y = p.x+1 ;
else rtn.x = p.x+1, rtn.y = p.y-1 ;
return rtn ;
}


int main ()
{
int T ;
PT p, q, i, t ;
double sum ;
scanf ("%d", &T) ;
while (T--)
{
scanf ("%d%d%d%d", &(p.x), &(p.y), &(q.x), &(q.y)) ;
if (cmp((void*)&p, (void*)&q) > 0)
t = p, p = q, q = t ;
sum = 0 ;
for (i = p ; cmp((void*)&i, (void*)&q) < 0 ;i = next(i))
sum += dist(i, next(i)) ;
printf ("%.3lf\n", sum) ;
}
return 0 ;
}



原文地址:https://www.cnblogs.com/lzsz1212/p/2314644.html