[xsy2962]作业
2024-10-21 11:46:06
题意:$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); }
最新文章
- csharp: MySQL Stored Procedure using DAL
- MySQL配置、使用规范
- POJ2396 Budget
- oracle 数据库时间类型为字符串 时间范围大小查询
- SQL Server 2008 R2,显示SQL语句执行窗口。 编辑前200行,可以执行SQL语句
- Windows7下安装搭建Ngnix教程
- bzoj 1588: [HNOI2002]营业额统计 treap
- DIV+CSS设计IE6浮动产生双倍距离
- C#实现图片文件到数据流再到图片文件的转换 --转
- oracle数据库元数据SQL查询
- iOS 添加阴影后 屏幕卡顿 抖动
- ios7新特性实践
- C语言之 短路原则
- React java.lang.UnsatisfiedLinkError: dlopen failed: ";/data/data/com.edaixi.activity/lib-main/libgnustl_shared.so"; is 32-bit instead of 64-bit
- MIUI9系统怎么启用Root超级权限的经验
- L1-049 天梯赛座位分配​​​​​​​
- js生成自定义随机数方法
- Vue-认识状态管理vuex
- try catch和spring事务
- [收藏]:[算法]LRU和LFU的区别
热门文章
- innodb_stats_on_metadata and slow queries on INFORMATION_SCHEMA
- Codeforces Round #534 (Div. 2) D. Game with modulo(取余性质+二分)
- cmd常用命令行
- 斯特林数(Stirling number)
- HDU1267 下沙的沙子有几粒? 基础DP
- 阻塞DOM
- unicode字符串解码显示
- mysql分页查询语法
- java 生成execl下载
- JavaScript获取和操作html的元素