萌新求助,关于「收敛」
  • 板块学术版
  • 楼主cjwen
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/3/23 09:06
  • 上次更新2023/10/28 05:53:52
查看原帖
萌新求助,关于「收敛」
367296
cjwen楼主2022/3/23 09:06

https://blog.csdn.net/qq_42101694/article/details/97422105

数列 aa 满足 a1=1.51,ai+1=14i×ai2i1(i1)a_{1}=\sqrt{1.5}-1, a_{i+1}=\frac{1-4 i \times a_{i}}{2 i-1}(i \geq 1),求 ana_{n}。输出保留 88 位小数。

样例输入:1010

样例输出:0.017482150.01748215

题解:直接推会有精度问题,倒推即可。

#include<iostream>
#include<cstdio>

using namespace std;

const int N = 1e7 + 10;

int n;
double a[N];

int main(){
	
	scanf("%d", &n);
	
	for(int i = 114514; i >= 1; i--){
		a[i] = (1-(2*i-1)*a[i+1])/(4*i);
	}
	
	printf("%.8f\n", a[n]);
	
	return 0;
}

但是将 999999999999 换成 114514114514,或任意一个较大的数,都是正确的!请问这是为什么

2022/3/23 09:06
加载中...