From f7f4086c4c09c9cc7bee7d4b427354de865d2391 Mon Sep 17 00:00:00 2001 From: unlockable Date: Mon, 25 Dec 2023 22:59:51 +0800 Subject: [PATCH] Still 2 wa, but different ones. --- 2023208/main.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/2023208/main.cpp b/2023208/main.cpp index 16623c8..7bb2459 100644 --- a/2023208/main.cpp +++ b/2023208/main.cpp @@ -1,4 +1,5 @@ #include +#define EPSILON 1e-6 double A[5051] = {0}; double point_xs[101] = {0}; @@ -19,7 +20,7 @@ double set_num(int row, int col, double content) { } bool compare_double(double a, double b) { - return (a - b > 0 ? a - b : -(a - b)) < 0.000001; + return (a - b > 0 ? a - b : -(a - b)) < EPSILON; } double evaluate(double x, int highest) { @@ -34,6 +35,7 @@ double evaluate(double x, int highest) { int main() { int n = 0, m = 0; int valid_point_num = 0; + freopen("lambdaeight19.in", "r", stdin); scanf("%d", &n); scanf("%d", &m); double read_x, read_y; @@ -58,9 +60,6 @@ int main() { for (int row = 0; row < valid_point_num; row++) { set_num(row, 0, 1); for (int col = 1; col <= row; col++) { - // double prev = get_num(row, col - 1); - // double coefficient = point_xs[row] - point_xs[col - 1]; - // set_num(row, col, prev * coefficient); set_num(row, col, get_num(row, col - 1) * (point_xs[row] - point_xs[col - 1])); } } @@ -70,7 +69,12 @@ int main() { for (int i = 0; i < row; i++) { t[row] -= t[i] * get_num(row, i); } - t[row] /= get_num(row, row); + if (!compare_double(t[row], 0)) { + t[row] /= get_num(row, row); + } + else { + t[row] = 0; + } } // Find for highest exponent @@ -79,9 +83,6 @@ int main() { if (!compare_double(t[highest], 0)) { break; } - // if (t[highest] != 0) { - // break; - // } } printf("%d\n", highest);