SNSEQ - Dãy số
Tác giả: RR
Ngôn ngữ: C++
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <string>
#include <deque>
#include <complex>
#define FOR(i,a,b) for(int i=(a),_b=(b); i<=_b; i++)
#define FORD(i,a,b) for(int i=(a),_b=(b); i>=_b; i--)
#define REP(i,a) for(int i=0,_a=(a); i<_a; i++)
#define ll long long
#define F first
#define S second
#define PB push_back
#define MP make_pair
using namespace std;
const double PI = acos(-1.0);
const double eps = 1e-4;
int n;
double a[1011], b[1011];
bool check(double x) {
a[n] = x;
double sumb = a[n] - a[1];
b[2] = (sumb - (n-1) * (n-2)) / (double) (n-1);
FOR(i,3,n) b[i] = b[i-1] + 2;
FOR(i,2,n-1) a[i] = a[i-1] + b[i];
FOR(i,1,n) if (a[i] < -1e-6) return false;
return true;
}
int main() {
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
cin >> n >> a[1];
double l = 0.0, r = 1e12, res = r;
while (l + eps < r) {
double mid = (l + r) / 2.0;
if (check(mid)) {
res = mid;
r = mid - eps;
}
else l = mid + eps;
}
printf("%.2lf\n", res);
return 0;
}