当前位置: 首页 > news >正文

洛谷B2147 求 f(x,n)

题目来源

B2147 求 f(x,n) - 洛谷

题目描述

计算 f 的值。

输入格式

输入 x 和 n。

输出格式

函数值,保留两位小数。

输入输出样例

输入 #1

4.2 10

输出 #1

3.68

算法分析

乍一看这题目很烦人,其实,如果我们可以转换一下,这道题目就很简单。

我们不妨算下:

f(x,1)f(x,2)f(x,3)​=1+x​=2+1+x​​=2+f(x,1)​=3+2+1+x​​​=3+f(x,2)​=3+2+f(x,1)​​⋮​

然后我们可以发现,f(x,n) 是一个层层包含的递归关系:如果 n=1,那么 f(x,n)=1+x​,否则,f(x,n)=n+f(x,n−1)​,于是就这么样递归下去然后向上累加答案,足够通过本题。

然而,如果 n 的范围很大,递归的层数很多,我们如果还用递归的话就会内存爆炸,那么怎么办呢?我们考虑把它转为一个递推公式:

fx,n​={1+x​n+fx,n−1​​​n=1n>1​

然后你就可以明白了,这不就可以用数组直接循环递推出来就可以了吗?你可能发现了第一维的 x,然后你注意到题目中 x 是个实数,那么就不能够以它作为数组的第一维,那么怎么办?我们又发现,n>1 时,fx,n​ 只和 n 和 fx,n−1​ 有关,并不和 x 有关。所以我们考虑直接将第一维省去,得到:

fn​={1+x​n+fn−1​​​n=1n>1​

然后你就可以用递推通过本题了

Code

#include <bits/stdc++.h>
using namespace std;
inline double f(double x, int n) {if(n>1) return sqrt(n+f(x,n-1));else return sqrt(1+x);
}int main() {double x;int n;scanf("%lf",&x);scanf("%d",&n);return printf("%.2lf",f(x,n)),0;
}

http://www.xdnf.cn/news/872317.html

相关文章:

  • 解决SQL Server SQL语句性能问题(9)——SQL语句改写(1)
  • 2ETLCloud:重新定义AI驱动的数据集成未来
  • 四、OpenCV图像处理- 视频操作
  • ArcGIS计算多个栅格数据的平均栅格
  • Educational Codeforces Round 179 (Rated for Div. 2)(A-E)
  • 看不见的守护者
  • 【机器人编程基础】循环语句for-while
  • 内存管理【Linux操作系统】
  • IEEE ICBCTIS 2025 会议征稿:探索区块链与信息安全的前沿学术之旅​
  • 操作系统学习(十三)——Linux
  • Elasticsearch 海量数据写入与高效文本检索实践指南
  • 上门服务小程序订单系统框架设计
  • Docker 常用命令详解
  • 洛谷每日1题-------Day40__P1720 月落乌啼算钱(斐波那契数列)
  • 卡西欧模拟器:Windows端功能强大的计算器
  • matlab实现高斯烟羽模型算法
  • AA-CLIP: Enhancing Zero-Shot Anomaly Detection via Anomaly-Aware CLIP
  • Linux操作系统Shell脚本概述与命令实战
  • 英伟达288GB HBM4+50P算力
  • 云数据库选型指南:关系型 vs NoSQL vs NewSQL的企业决策
  • Selenium自动化测试工具安装和使用(PyCharm)
  • Java运行环境配置日志(Log)运行条件,包含鸿蒙HarmonyOS
  • 函数与运算符重载
  • 【freertos-kernel】timer
  • 嵌入式链表操作原理详解
  • 《小明的一站式套餐服务平台:抽象工厂模式》
  • 线夹金具测温在线监测装置:电力设备安全运行的“隐形卫士”
  • GAMES202-高质量实时渲染(Real-Time Physically-based Materials)
  • C++课设:通讯录管理系统(vector、map协作实现)
  • 在VSCode中开发一个uni-app项目