战争尾声
题目链接:nowcoder 215073
到主站看:https://blog.csdn.net/weixin_43346722/article/details/113064064
题目大意
有一堆点在一个 200×200 的网格中,坐标为整数,问你是否存在一个整数坐标的点,让所有点到它的距离相等。
相等就是两短距离差的绝对值小于 0.0001。
思路
因为题目说所有的点都在整数坐标撒花姑娘,而且只有 个整数点,就不如直接枚举每一个点,看它跟每个给的点的距离是否相等。
(判断两点之间的距离用勾股定理:)
然后记得判断相等不是之间相等,而是要绝对值小于 1e-4。
代码
#include<cstdio> #include<cmath> using namespace std; int n; double x[201], y[201], dis; bool no, yes; double get_dis(double x, double y, double xx, double yy) { return sqrt((x - xx) * (x - xx) + (y - yy) * (y - yy)); }//通过勾股定理得出两点之间的距离 double abss(double x) { if (x < 0) return -x; return x; } int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%lf %lf", &x[i], &y[i]); } for (int i = 1; i <= 200; i++) for (int j = 1; j <= 200; j++) {//枚举网格上的每一个点 dis = get_dis(1.0 * i, 1.0 * j, x[1], y[1]); no = 0; for (int k = 2; k <= n; k++) { if (abss(dis - get_dis(1.0 * i, 1.0 * j, x[k], y[k])) >= 1e-4) { no = 1; break; } } if (!no) { printf("%d %d", i, j); return 0; } } printf("War is cruel."); return 0; }