diff --git a/2023208/main.cpp b/2023208/main.cpp index 7bb2459..c978c69 100644 --- a/2023208/main.cpp +++ b/2023208/main.cpp @@ -35,7 +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); + // freopen("lambdaeight9.in", "r", stdin); scanf("%d", &n); scanf("%d", &m); double read_x, read_y; @@ -60,27 +60,31 @@ int main() { for (int row = 0; row < valid_point_num; row++) { set_num(row, 0, 1); for (int col = 1; col <= row; col++) { - set_num(row, col, get_num(row, col - 1) * (point_xs[row] - point_xs[col - 1])); + set_num(row, col, point_xs[row] - point_xs[col - 1]); } } // Solve for t + int continued_zero_count = 0; for (int row = 0; row < valid_point_num; row++) { for (int i = 0; i < row; i++) { - t[row] -= t[i] * get_num(row, i); + t[row] /= get_num(row, i); + t[row] -= t[i]; } - if (!compare_double(t[row], 0)) { - t[row] /= get_num(row, row); - } - else { + if (compare_double(t[row], 0)) { t[row] = 0; + continued_zero_count++; + } + else { + t[row] /= get_num(row, row); + continued_zero_count = 0; } } // Find for highest exponent int highest = valid_point_num - 1; for (; highest >= 0; highest--) { - if (!compare_double(t[highest], 0)) { + if (!compare_double(t[highest] / 10, 0)) { break; } }