#include using namespace std; #define REP(i,n) for(int i=0; i<(int)(n); i++) // approximate 2-d data points with y = ax + b template pair leaset_squares(const vector &x, const vector &y) { int n = x.size(); double x1 = 0; double x2 = 0; double y1 = 0; double xy = 0; REP (i, n) { x1 += x[i]; x2 += 1.0 * x[i] * x[i]; y1 += y[i]; xy += 1.0 * x[i] * y[i]; } double a = (n * xy - x1 * y1) / (n * x2 - x1 * x1); double b = (x2 * y1 - xy * x1) / (n * x2 - x1 * x1); return {a, b}; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector x(n), y(n); REP (i, n) { x[i] = i; cin >> y[i]; } auto [a, b] = leaset_squares(x, y); double ret = 0; REP (i, n) { double tmp = y[i] - (b + a * i); ret += tmp * tmp; } cout << fixed << setprecision(12); cout << b << " " << a << endl; cout << ret << endl; return 0; }