7-3 求给定精度的简单交错序列部分和

news2024/11/15 23:31:49

 

分数 15

全屏浏览题目

切换布局

作者 C课程组

单位 浙江大学

本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。

输入格式:

输入在一行中给出一个正实数eps。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。

输入样例1:

4E-2

输出样例1:

sum = 0.854457

输入样例2:

0.02

输出样例2:

sum = 0.826310

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

我的答案:

C语言:

#include <stdio.h>

int main() {
    double eps, sum = 0.0, term;
    int i = 1, sign = 1;  // 初始化i和符号sign
    
    scanf("%lf", &eps);
    
    while(1) {
        term = 1.0 / (3 * i - 2);  // 计算当前项
        if(term <= eps) break;  // 检查终止条件
        
        sum += sign * term;  // 根据符号累加到sum
        sign = -sign;  // 符号取反,实现交替效果
        i++;  // 移动到下一个项
    }
    
    printf("sum = %.6f\n", sum);
    
    return 0;
}

 C++:
 

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    double eps, sum = 0.0, term;
    int i = 1, sign = 1;  // 初始化i和符号sign
    
    cin >> eps;
    
    while(1) {
        term = 1.0 / (3 * i - 2);  // 计算当前项
        if(term <= eps) break;  // 检查终止条件
        
        sum += sign * term;  // 根据符号累加到sum
        sign = -sign;  // 符号取反,实现交替效果
        i++;  // 移动到下一个项
    }
    
    cout << "sum = " << fixed << setprecision(6) << sum << endl;
    
    return 0;
}

解题过程分析:

  1. 初始化部分: 首先,我们定义了eps存储精度,sum存储序列的部分和,term存储当前项的值。为了确保正负号的交替,我们定义了一个名为sign的变量,初始值为1。每次使用完后都取反。

  2. 计算部分和: 使用while循环继续添加项,直到当前项的绝对值小于或等于eps为止。每次迭代,我们都会计算新的项,并更新sum。每次迭代后,我们还要更新i的值和sign的值。

  3. 输出: 使用固定的浮点数格式和六位精度输出结果。

这种方式的解题方法侧重于观察数学序列的规律,并将其转化为算法实现。

总结:

从这道题目,我们可以学到以下几点:

1. **观察数学规律**: 解决这类题目的关键是首先找到数学序列的规律。在本题中,我们观察到序列的分子始终为1,分母是递增的,每次增加3,且正负号是交替的。

2. **循环控制**: 了解如何使用循环来累加序列,并掌握如何根据某个条件(在这里是项的绝对值小于或等于`eps`)来终止循环。

3. **处理浮点数精度**: 在处理涉及浮点数的题目时,特别是当需要特定精度的输出时,我们应该知道如何设置输出的精度(例如,在C++中使用`setprecision`)。

4. **交替符号技巧**: 通过使用一个整数`sign`,其值在1和-1之间切换,我们可以轻松地实现一个交替系列。这是处理交错系列或任何需要切换两种状态的问题的一个常见技巧。

5. **简洁的代码结构**: 从这题的解法中,我们可以看到如何组织代码结构使其既简洁又易于理解。例如,我们使用一个简单的`while`循环来计算部分和,而不是复杂的多重循环或条件结构。

6. **问题建模**: 学会如何将实际问题或数学问题建模为计算问题,然后用算法来解决。这是计算思维的核心。

总的来说,这道题目是一个很好的入门级题目,它结合了基本的编程技巧和数学知识,帮助我们提高了解决实际问题的能力。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/887711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年排行前五的大规模语言模型(LLM)

2023年排行前五的大规模语言模型(LLM) 截至2023年&#xff0c;人工智能正在风靡全球。它已经成为热门的讨论话题&#xff0c;吸引了数百万人的关注&#xff0c;不仅限于技术专家和研究人员&#xff0c;还包括来自不同背景的个人。人们对人工智能热情高涨的原因之一是其在人类多…

新版本Qt Creator无法提示错误、不报红

问题 更新新版本Qt Creator后无法实时提示错误&#xff0c;在开发中非常难受 如图&#xff0c;此时w后面少了;Qt Creator却只有红色横线标识&#xff0c;没有具体的错误。 解决方法 首先要知道&#xff0c;提供这个错误显示功能是ClangCodeModel插件提供的&#xff0c;因此…

Kafka-eagle监控平台

Kafka-Eagle简介 在开发工作中&#xff0c;当业务不复杂时&#xff0c;可以使用Kafka命令来进行一些集群的管理工作。但如果业务变得复杂&#xff0c;例如&#xff1a;需要增加group、topic分区&#xff0c;此时&#xff0c;再使用命令行就感觉很不方便&#xff0c;此时&#x…

FPGA_学习_15_IP核_VIO

前一篇博客我们提到在线调试的时候&#xff0c; 可执行文件只要烧进板子&#xff0c;程序它就会自己跑起来&#xff0c;不会等你点 这个按钮&#xff0c;它才开始跑。我们测试的模块中&#xff0c;里面可能有几个我们关心的信号&#xff0c;它会在程序刚运行很短的时间内发生状…

matlab初

matlab语言方式与c有很大的相似之处&#xff0c;此篇记录一下自己初步学习matlab的一些过程和代码 学习matlab主要是从b站上&#xff0c;也从matlab官网去学习了一下相关感兴趣的函数 版本是之前下好的R2022b 1.变量命名&#xff0c;这与c语言变量命名要求的规则非常相似 简单…

Pycharm与Anaconda Python的开发环境搭建

目录 一&#xff1a;下载 二&#xff1a;安装python 三&#xff1a;设置Pycharm 一&#xff1a;下载 下载Anaconda&#xff1a; Anaconda | The World’s Most Popular Data Science Platform 安装好以后&#xff0c;设置一下环境变量&#xff1a; 打开命令行&#xff0c…

双链表的插入,删除以及遍历

在上一节我们讲解了单链表的头插法和尾插法 http://t.csdn.cn/RixAu 但是单链表无法反向检索&#xff0c;对于某些情景可能造成不便&#xff0c;所以我们今天学习双链表 目录 1.双链表的初始化 2.双链表的插入 3.双链表的删除 4.遍历双链表 1.双链表的初始化 typedef i…

【Git】(一)基本操作

读完本文后&#xff0c;您会了解&#xff1a; 1、如何在本地配置GIT环境&#xff1f; 2、环境配置成功后&#xff0c;如何从远端下载一个已有仓库到本地? 1. 配置全局用户名、邮箱 git config --global user.name "username" git config --global user.email &q…

plt绘画带箭头的xy坐标轴

import matplotlib.pyplot as plt import mpl_toolkits.axisartist as axisartist# 创建画布 fig plt.figure() # 使用axisartist.Subplot方法创建一个绘图区对象ax ax axisartist.Subplot(fig,2,3,1) # 将绘图区对象添加到画布中 fig.add_axes(ax) # 通过set_axisline_style…

varifocal loss(VFL)介绍

文章目录 一、论文链接二、公式理解代码 一、论文链接 https://arxiv.org/pdf/2008.13367.pdf 二、公式理解 简单说明下&#xff0c;这里的IACS是IoU-aware classification score的缩写。VFL原文里面这个target socre也就是q&#xff0c;是一个和IOU有关的软标签。对于挑选出…

华为网络篇 RIP的报文认证-28

难度2复杂度2 目录 一、实验原理 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 RIP的认证方式有两种&#xff0c;一种是明文认证&#xff0c;另一个是密文认证。明文认证有一个比较大的缺陷&#xff0c;就是认证的密钥也是明文传输的&#xff0c;这为攻击者…

关于 LLM 和图数据库、知识图谱的那些事

本文整理自 NebulaGraph 布道师 wey 在「夜谈 LLM」主题分享上的演讲&#xff0c;主要包括以下内容&#xff1a; 背景 LLMRAGGraph 知识抽取Text2CypherGraph RAG未来规划 技术背景 LLM 是什么 这里简单、快速地介绍下大语言模型&#xff1a;从 GPT-2 开始&#xff0c;到后…

如何在安卓设备上安装并使用 ONLYOFFICE 文档

您可以使用文档安卓版应用&#xff0c;在移动设备上访问存在您 ONLYOFFICE 帐号中的文件。阅读本文&#xff0c;了解如何操作。 什么是 ONLYOFFICE 文档安卓版 适用于 Android 系统的 ONLYOFFICE 文档是一款全面的办公工具&#xff0c;您可以使用它&#xff0c;查看、创建、编…

42.SpringBoot—原理篇

一、SpringBoot原理篇。 &#xff08;1&#xff09;自动配置。 &#xff08;1.1&#xff09;bean加载方式。 &#xff08;1.1.1&#xff09;xml方式。(适用自定义bean与第三方bean&#xff09; &#xff08;1.1.2&#xff09;注解方式组件扫描。(适用于自定义bean&#xff…

[PyTorch][chapter 50][自定义网络 ResNet18]

前言&#xff1a; 这里结合一个ResNet-18 网络&#xff0c;讲解一下自己定义一个深度学习网络的完整流程。 经过20轮的训练&#xff0c;测试集上面的精度85% 一 残差块定义 针对图像处理有两种结构&#xff0c;下面代码左右实现的是左边的结构. # -*- coding: utf-8 -*- &q…

基于YOLOv8模型和Caltech数据集的行人检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要 基于YOLOv8模型和Caltech数据集的行人检测系统可用于日常生活中检测与定位行人&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的行人目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数据集…

2022年06月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;小白鼠再排队 N只小白鼠(1 < N < 100)&#xff0c;每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量&#xff0c;要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。帽子的颜色用 “red”&#xff0c;“blue”等字符串来表示。不同的小白…

实现简单纯Canvas文本输入框,新手适用

文章目录 概要效果技术细节代码 概要 Canvas上面提供输入&#xff1a; 一、最简单可能是用dom渲染一个input,覆盖在图形上面进行文本编辑&#xff0c;编辑完再把内容更新到图形.这样简单&#xff0c;但是缺点也明显&#xff0c;就是它不是真正绘制在canvas上面&#xff0c;没…

爬虫逆向实战(三)--天某云登录

一、数据接口分析 主页地址&#xff1a;天某云 1、抓包 通过抓包可以发现登录接口是account/login 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过“载荷”模块可以发现password、comParam_signature、comParam_seqCode是加密的 请求头是否加密&#xff1f; 无…

嵌入式学习之字符串

通过今天的学习&#xff0c;我主要提高了对sizeof 和 strlen、puts()、gets()、strcmp 、strncmp、strstr、strtok的理解。重点对sizeof的使用有了更加深刻的理解