题意:$f_0=1-\dfrac1e,f_n=1-nf_{n-1}$,求$f_n(n\leq10000)$,保留四位小数

这题代码只有⑨行但是题解很神...

因为递推式中有乘法,所以直接按题目来推肯定会爆精度

我们先把数字存为$a+\dfrac be$的形式然后打个表,发现$f_n$会越来越小且趋于$0$,所以直接从一个相当大的$n$开始倒推(此时可以认为$f_n=0$),$f_{n-1}=\dfrac{1-f_n}n$,因为只有除法和减法所以不会爆精度

对$f_n$的估计,题解给出了一个神仙构造...

对$x^ne^x$分部积分,得到$\int x^ne^x\mathrm dx=x^ne^x-n\int x^{n-1}e^x\mathrm dx$,这和$f_n$的递推式极其相似

因为式中有变量$x$,所以我们要确定积分上下界以削除$x$,我们也想把积分号外的项削到与$n$无关,不妨取$x\in[0,1]$并得到$\int_0^1x^ne^x\mathrm dx=e-n\int_0^1x^{n-1}e^x\mathrm dx$,即$\dfrac1e\int_0^1x^ne^x\mathrm dx=1-n\dfrac1e\int_0^1x^{n-1}e^x\mathrm dx$,比较递推式,立得$f_n=\dfrac1e\int_0^1x^ne^x\mathrm dx$,$f_0=1-\dfrac1e$满足此式

知道这个式子后什么都简单了==很明显它是单调递减而且趋于$0$的...所以以上的做法没有问题

#include<stdio.h>
int main(){
	int n,i;
	double s;
	s=0;
	scanf("%d",&n);
	for(i=7000000;i>n;i--)s=(1-s)/i;
	printf("%.4lf",s);
}

最新文章

  1. csharp: MySQL Stored Procedure using DAL
  2. MySQL配置、使用规范
  3. POJ2396 Budget
  4. oracle 数据库时间类型为字符串 时间范围大小查询
  5. SQL Server 2008 R2,显示SQL语句执行窗口。 编辑前200行,可以执行SQL语句
  6. Windows7下安装搭建Ngnix教程
  7. bzoj 1588: [HNOI2002]营业额统计 treap
  8. DIV+CSS设计IE6浮动产生双倍距离
  9. C#实现图片文件到数据流再到图片文件的转换 --转
  10. oracle数据库元数据SQL查询
  11. iOS 添加阴影后 屏幕卡顿 抖动
  12. ios7新特性实践
  13. C语言之 短路原则
  14. React java.lang.UnsatisfiedLinkError: dlopen failed: &quot;/data/data/com.edaixi.activity/lib-main/libgnustl_shared.so&quot; is 32-bit instead of 64-bit
  15. MIUI9系统怎么启用Root超级权限的经验
  16. L1-049 天梯赛座位分配​​​​​​​
  17. js生成自定义随机数方法
  18. Vue-认识状态管理vuex
  19. try catch和spring事务
  20. [收藏]:[算法]LRU和LFU的区别

热门文章

  1. innodb_stats_on_metadata and slow queries on INFORMATION_SCHEMA
  2. Codeforces Round #534 (Div. 2) D. Game with modulo(取余性质+二分)
  3. cmd常用命令行
  4. 斯特林数(Stirling number)
  5. HDU1267 下沙的沙子有几粒? 基础DP
  6. 阻塞DOM
  7. unicode字符串解码显示
  8. mysql分页查询语法
  9. java 生成execl下载
  10. JavaScript获取和操作html的元素