鱼C论坛

 找回密码
 立即注册
查看: 949|回复: 15

[技术交流] 轻松一练

[复制链接]
回帖奖励 14 鱼币 回复本帖可获得 2 鱼币奖励! 每人限 1 次(中奖概率 20%)
发表于 2024-9-8 21:22:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

P不知道几      轻松一练

题目背景
简单小题,轻松一练

A国与邪恶的A国(划掉)B国发生了战争,B国投放了秘密武器!
在一次演唱会上,人们在舞台前面的超宽超短长方形广场里围成了一个很大的方阵(容易想到挤满了人),几乎是无限宽的,但长很有限(长定义为舞台到对面的距离)。
B国就在这时投放了武器,其实是一颗球。这颗球从舞台的对面出发,飞快地飞向舞台,并对其右边的所有人发射激光(当然不能穿墙),到达舞台后停止。
当A国警方赶到时,已经有了严重的人员伤亡。

题目描述
A国警方得知,在球距离出发墙壁的距离为x时,球距离右侧墙壁的距离为一个大于0的三次整系数多项式f(x)=ax^3+bx^2+cx+d。警方希望由此得出球的激光扫过的面积,以估算人员伤亡。

输入格式
第一行为五个整数,分别为上文中的a,b,c,d,还有广场的长l。

输出格式
仅一个两位小数,表示面积。

输入输出样例
  1. 0 3 2 1 1
复制代码
  1. 3.00
复制代码


数据范围
a,b,c,d,l <= 100

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-9-8 21:30:25 | 显示全部楼层
为了计算广场上的球发射激光扫过的面积,我们需要求出在给定区间内三次多项式函数的面积,这实际上是一个积分问题。我们可以利用数值积分方法,例如梯形积分法来计算该面积。

根据题意,我们需要对多项式 \( f(x) = ax^3 + bx^2 + cx + d \) 在区间 \([0, l]\) 上进行积分。

步骤:
1. 输入多项式系数和区间长度 \( l \)。
2. 定义多项式函数。
3. 使用数值积分方法(如梯形法)进行积分计算。
4. 输出积分值并格式化为两位小数。

下面是一个Python程序,它实现了上述说明中的方法:

  1. def polynomial(x, a, b, c, d):
  2.     return a * x**3 + b * x**2 + c * x + d

  3. def trapezoidal_integral(f, a, b, n, *args):
  4.     h = (b - a) / n
  5.     total = (f(a, *args) + f(b, *args)) / 2.0
  6.     for i in range(1, n):
  7.         total += f(a + i * h, *args)
  8.     return total * h

  9. # 读取输入
  10. a, b, c, d, l = map(int, input().split())

  11. # 设置积分区间和步数
  12. lower_bound = 0
  13. upper_bound = l
  14. n = 1000  # 分段数

  15. # 计算积分
  16. area = trapezoidal_integral(polynomial, lower_bound, upper_bound, n, a, b, c, d)

  17. # 输出结果,保留两位小数
  18. print(f"{area:.2f}")
复制代码


### 输入示例
  1. 0 3 2 1 1
复制代码


### 输出示例
  1. 3.00
复制代码


程序解释:
1. `polynomial`函数定义了三次多项式。
2. `trapezoidal_integral`函数使用梯形积分法计算多项式从 \(0\) 到 \(l\) 的积分。
3. 主程序读取输入并调用上述函数计算积分值。
4. 输出结果保留两位小数。

这个程序可以解决题目所要求的计算积分值的问题,并且输出格式准确无误。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-8 21:47:38 | 显示全部楼层
FishC 发表于 2024-9-8 21:30
为了计算广场上的球发射激光扫过的面积,我们需要求出在给定区间内三次多项式函数的面积,这实际上是一个积 ...

我们需要C++程序
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-8 21:47:51 | 显示全部楼层


好的,下面是一个使用C++实现上述积分计算的程序。我们将使用梯形积分法来计算广场上球发射激光扫过的面积。

  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cmath>

  4. // 定义多项式函数 f(x) = ax^3 + bx^2 + cx + d
  5. double polynomial(double x, int a, int b, int c, int d) {
  6.     return a * std::pow(x, 3) + b * std::pow(x, 2) + c * x + d;
  7. }

  8. // 使用梯形积分法计算区间 [lower, upper] 上的积分
  9. double trapezoidal_integral(double (*f)(double, int, int, int, int), double lower, double upper, int n, int a, int b, int c, int d) {
  10.     double h = (upper - lower) / n;
  11.     double total = (f(lower, a, b, c, d) + f(upper, a, b, c, d)) / 2.0;
  12.     for (int i = 1; i < n; ++i) {
  13.         total += f(lower + i * h, a, b, c, d);
  14.     }
  15.     return total * h;
  16. }

  17. int main() {
  18.     int a, b, c, d, l;
  19.    
  20.     // 读取输入
  21.     std::cin >> a >> b >> c >> d >> l;
  22.    
  23.     // 设置积分区间和步数
  24.     double lower_bound = 0.0;
  25.     double upper_bound = static_cast<double>(l);
  26.     int n = 1000;  // 分段数

  27.     // 计算积分
  28.     double area = trapezoidal_integral(polynomial, lower_bound, upper_bound, n, a, b, c, d);

  29.     // 输出结果,保留两位小数
  30.     std::cout << std::fixed << std::setprecision(2) << area << std::endl;

  31.     return 0;
  32. }
复制代码


### 解释:
1. **定义多项式函数**:函数 `polynomial` 接收参数 \( x \),以及多项式的系数 \( a, b, c, d \),返回三次多项式的值。
2. **梯形积分法**:函数 `trapezoidal_integral` 使用梯形积分法计算区间 \([lower, upper]\) 上的积分。它接收多项式函数指针 \( f \),区间左右边界 \( lower \) 和 \( upper \),分段数 \( n \),以及多项式系数。
3. **输入输出**:主函数 `main` 读取输入的多项式系数和区间长度 \( l \),调用积分函数计算积分值,并将结果格式化为两位小数后输出。

### 输入输出示例:
对于输入 `0 3 2 1 1`

程序会输出:`3.00`

这个C++程序满足题目要求,并且能准确计算和输出积分值,适合作为解答提交。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-9 09:59:35 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-9-9 10:31:09 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-9-9 16:50:34 | 显示全部楼层
math板块里面有没有直接用来算积分的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-10 17:21:30 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-9-11 09:42:03 | 显示全部楼层

回帖奖励 +2 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-9-14 17:32:07 | 显示全部楼层
终于找到了!回帖奖励!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-14 17:34:07 | 显示全部楼层
回帖奖励
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-14 17:37:49 | 显示全部楼层
0.64的概率被我碰上了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-14 17:39:19 | 显示全部楼层
0.48的概率被我碰上了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-14 17:39:35 | 显示全部楼层
0.4的概率被我碰上了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-14 17:40:14 | 显示全部楼层

回帖奖励 +2 鱼币

呜呜呜,为什么0.32了还不爆鱼币
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层

回帖奖励 +2 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-25 17:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表