SNSEQ - Dãy số
Tác giả: ll931110
Ngôn ngữ: C++
#include <algorithm>
#include <bitset>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <fstream>
#include <iostream>
#include <iterator>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <string>
#include <vector>
typedef long long ll;
using namespace std;
double a[1010],ret;
int n;
bool ok(double med)
{
a[n] = med;
double delta = ((a[1] - a[n]) + (n - 2) * (n - 1) * 1.0) / (n - 1) * 1.0;
bool chk = true;
for (int i = 2; i <= n; i++)
{
a[i] = a[i - 1] - delta;
if (a[i] < 0) chk = false;
delta -= 2.0;
};
if (chk) ret = med;
return chk;
};
int main()
{
// freopen("seq.in","r",stdin);
// freopen("seq.ou","w",stdout);
scanf("%d %lf", &n, &a[1]);
double inf = 0.0,sup = 1e12;
for (int i = 0; i < 70; i++)
{
double med = (inf + sup)/2;
if (ok(med)) sup = med; else inf = med;
};
printf("%.2lf\n", ret);
};