結果
| 問題 |
No.731 等差数列がだいすき
|
| ユーザー |
ant2357
|
| 提出日時 | 2018-11-14 21:41:35 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 1,500 ms |
| コード長 | 1,269 bytes |
| コンパイル時間 | 1,808 ms |
| コンパイル使用メモリ | 198,808 KB |
| 最終ジャッジ日時 | 2025-01-06 16:40:42 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 18 |
ソースコード
#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using ld = long double;
const double PI = 3.1415926535897932384626433832795;
const int dx[] = { 0, 1, 0, -1 };
const int dy[] = { -1, 0, 1, 0 };
int gcd(int x, int y) { return y ? gcd(y, x % y) : abs(x); }
ll gcd(ll x, ll y) { return y ? gcd(y, x % y) : abs(x); }
int lcm(int x, int y) { return x / gcd(x, y) * y; }
ll lcm(ll x, ll y) { return x / gcd(x, y) * y; }
pair<double, double> f(const vector<pair<int, int>> &v) {
int n = v.size();
double x = 0, y = 0, xx = 0, xy = 0;
for (int i = 0; i < n; i++) {
x += v[i].first;
y += v[i].second;
xx += v[i].first * v[i].first;
xy += v[i].first * v[i].second;
}
double a = (n * xy - x * y) / (n * xx - x * x);
double b = (xx * y - xy * x) / (n * xx - x * x);
return { a, b };
}
int main() {
//ios::sync_with_stdio(false);
//cin.tie(0);
int n;
cin >> n;
vector<int> a(n);
for (auto &v : a) {
cin >> v;
}
vector<pair<int, int>> v(n);
for (int i = 0; i < n; i++) {
v[i] = make_pair(i, a[i]);
}
double aa, bb;
tie(aa, bb) = f(v);
printf("%.10f %.10f\n", bb, aa);
double c = 0;
for (int i = 0; i < n; i++) {
double y = aa * i + bb;
double d = y - a[i];
c += d * d;
}
printf("%.10f\n", c);
return 0;
}
ant2357