PTA刷题笔记(难度预警!!!有详解)

·7-18 二分法求多项式单根

代码如下:

​
#include <stdio.h>
#include <math.h>// 定义多项式函数
double polynomial(double x, double a3, double a2, double a1, double a0) {return a3 * x * x * x + a2 * x * x + a1 * x + a0;
}// 二分法求根函数
double bisection_method(double a3, double a2, double a1, double a0, double a, double b) {double fa = polynomial(a, a3, a2, a1, a0);double fb = polynomial(b, a3, a2, a1, a0);double mid, fmid;const double threshold = 1e-6; // 阈值设为10^-6while (fabs(b - a) >= threshold) {mid = (a + b) / 2;fmid = polynomial(mid, a3, a2, a1, a0);if (fabs(fmid) < threshold) {return mid; // 正好找到根,不用fmid == 0的原因是避免浮点数精度问题导致无法准确判断零点}if (fa * fmid < 0) { // 根在左半区间b = mid;fb = fmid;} else { // 根在右半区间a = mid;fa = fmid;}}return (a + b) / 2; // 返回区间中点作为近似根
}int main() {double a3, a2, a1, a0;double a, b, root;// 读取多项式系数scanf("%lf %lf %lf %lf", &a3, &a2, &a1, &a0);// 读取区间端点scanf("%lf %lf", &a, &b);// 使用二分法求根root = bisection_method(a3, a2, a1, a0, a, b);// 输出结果,保留2位小数printf("%.2f\n", root);return 0;
}​

代码说明:

1. 多项式函数:polynomial 函数计算给定x值时多项式的值。

2. 二分法实现:
   · 初始化区间端点的函数值
   · 循环直到区间长度小于阈值(1e-6)
   · 计算中点及其函数值
   · 根据中点函数值调整搜索区间

3. 主函数:
   · 读取多项式系数(a3, a2, a1, a0)
   · 读取搜索区间[a, b]
   · 调用二分法函数求根
   · 输出结果,保留2位小数

4. 精度控制:
   · 使用1e-6作为阈值,确保结果精确
   · 输出时使用%.2f格式保留2位小数

·7-22 龟兔赛跑

 解题思路
1. 初始化变量:设置乌龟和兔子的初始位置为0,时间从0开始。
2. 模拟每分钟的过程:
   · 乌龟每分钟固定前进3米。
   · 兔子每分钟前进9米,但需要检查是否满足休息条件:
     · 每跑10分钟,兔子会检查是否超过乌龟。如果是,则休息30分钟;否则继续跑。
   · 注意处理兔子的休息状态,休息期间兔子不移动。
3. 比较结果:根据T分钟后的距离,输出胜者或平局。

代码如下:

#include <stdio.h>int main() 
{int T;scanf("%d", &T); // 输入比赛时间int turtle = 0; // 乌龟跑的距离int rabbit = 0; // 兔子跑的距离int rabbit_rest = 0; // 兔子剩余休息时间int rabbit_run = 0; // 兔子已经跑了多少分钟(用于判断是否到10分钟)for (int t = 1; t <= T; t++) {turtle += 3; // 乌龟每分钟跑3米if (rabbit_rest > 0) {rabbit_rest--; // 兔子在休息} else {rabbit += 9; // 兔子每分钟跑9米rabbit_run++;if (rabbit_run == 10){ // 每跑10分钟检查一次if (rabbit > turtle) {rabbit_rest = 30; // 休息30分钟}rabbit_run = 0; // 重置跑步计时}}}// 输出结果if (turtle > rabbit) {printf("@_@ %d\n", turtle);} else if (rabbit > turtle) {printf("^_^ %d\n", rabbit);} else {printf("-_- %d\n", rabbit);}return 0;
}

代码说明
1. 输入处理:读取比赛时间T。
2. 模拟过程:
   · 乌龟每分钟固定增加3米。
   · 兔子每分钟检查是否在休息,如果不是,则跑9米,并检查是否达到10分钟。如果是,则判断是否超过乌龟,决定是否休息。
3. 结果输出:根据T分钟后的距离,输出对应的符号和距离。

 注意事项
· 兔子的休息时间是30分钟,期间不移动。
· 每跑10分钟,兔子会检查一次是否超过乌龟,而不是每10分钟固定休息。
· 输出符号需严格匹配题目要求(`@_@`、`^_^`、`-_-`)。

·7-23 币值转换

代码如下:

#include<stdio.h>
int main()
{int m,flag1 =0,flag2 = -1;/*举个例子:3600存储在下面数组中下标:0    1     2     3      4     5    6    7    8单位:亿   千万  百万  十万   万    千   百    十    个值  :0    0     0     0      0    3    6    0     0*///flag1用于标记输入数据的最高位所在数组的位置(后面会把输入的数字拆开每一位存入数组,//如果数值比较小,前面就会有很多零,因此要找到第一个不为零的位置从这里开始输出)//flag2用于标记最后一个非零数字位置(如3600读作三千六百,后面的两个零是不输出的)char u1[10] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};//存储0-9代表的字母scanf("%d", &m);//如果输入值为0,直接输出0并退出程序即可;if(m == 0){printf("a");exit(0);}int a[9] = {0};//定义一个上面画的数组char u2[8] = {'Y', 'Q', 'B', 'S', 'W', 'Q', 'B', 'S'};//把单位存下来//获取各位数字并存到数组中for(int i = 8; i >= 0; i--){a[i] = m % 10;m /= 10;}//寻找最后一个非零数字位置for(int j = 0; j < 9; j++){if(a[j] == 0) flag2 = j - 1;else flag2 = -1;}for(int i = 0; i < 9; i ++){//遍历到最后一个非零位置直接退出循环if(i == flag2) {break;}//找到第一个不为零的位置,flag变为1,此后就一直是1;if(a[i]! = 0) flag1 = 1;//情况一:该位置数字≠0,这种最简单,直接输出对应字母if(flag1 == 1){if(a[i] != 0){printf("%c", u1[a[i]]);}//情况二:对于该位置数字=0,要继续分多种情况讨论else if(a[i] == 0){//情况(1)中间单个0if(a[i-1] != 0 && a[i+1] != 0){//如101这种情况printf("a");continue;//此处continue的原因是不能出现一百零十一,零是没有单位的}//情况(2)中间有多个零,如10086,else if(a[i-1] == 0 && a[i+1] != 0{ printf("a");}//判断当前位置是否为中间的最后一个零,只需输出最后一个零即可//情况(3)中间有多个零但零和它前面的数字组成整体,如100000十万,第一个零后带有单位万else {if(a[i-1] != 0){printf("%c",u2[i]);}//输出数字对应单位}}//最后正常输出单位即可,注意最后一个数字无单位,因此不能输出u2[8];if(i < 8 && a[i] != 0){printf("%c", u2[i]);}}}return 0;
}

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

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

相关文章

打破传统范式,线上 3D 画展彰显多元亮点

&#xff08;一&#xff09;沉浸式体验&#xff0c;身临其境赏画​ 线上 3D 画展运用先进的 3D 建模和虚拟现实&#xff08;VR&#xff09;技术&#xff0c;高度还原了真实的展厅环境 。展厅内的布局、灯光&#xff0c;甚至墙壁的质感都被完美复刻&#xff0c;让观众仿佛置身于…

Docker架构详解

一,Docker的四大要素&#xff1a;Dockerfile、镜像(image)、容器(container)、仓库(repository) 1.dockerfile&#xff1a;在dockerfile文件中写构建docker的命令,通过dockerbuild构建image 2.镜像&#xff1a;就是一个只读的模板&#xff0c;镜像可以用来创建docker容器&…

【工具类】常用的工具类——CollectionUtil

目录 cn.hutool.core.collection.CollectionUtil集合创建集合清空集合判空集合去重集合过滤集合转换集合合并集合交集集合差集集合是否包含元素集合是否包含指定元素&#xff08;自定义条件&#xff09;集合分页集合分组集合转字符串元素添加元素删除根据属性转Map获取元素获取…

从零起步搭建基于华为云构建碳排放设备管理系统的产品设计

目录 &#x1f33f; 华为云 IoT&#xff1a;轻松上手碳排放设备管理系统搭建 &#x1f30d; 逐步搭建搭建规划 &#x1f680; 一、系统蓝图&#xff1a;5大核心模块&#xff0c;循序渐进 1️⃣ 设备管理与数据采集层 2️⃣ 数据传输与协议转换层 3️⃣ 数据处理与分析层…

华为OD机试真题—— 小明减肥(2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 B卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

数据结构 -- 插入排序(直接插入排序和希尔排序)

插入排序 算法思想 每次将⼀个待排序的记录按其关键字大小插入到前面已排好序的子序列中&#xff0c;直到全部记录插入完成。 代码实现 void InsertSort(int A[],int n){int i,j,temp;for(i 1;i<n;i){if(A[i]<A[i-1]){temp A[i]; //用temp暂存A[i]for(ji-1;j>…

word中表格拉不动以及插入图片有间距

word中的表格宽度和高度怎么调整都改不了&#xff0c;可以将选中表格—右键—段落—取消勾选下图中的两项。 word中表格插入图片始终有间隙&#xff0c;怎么也消除不了间隙&#xff0c;可以在表布局—单元格边距—修改上下左右边距为0即可

网络抓包命令tcpdump及分析工具wireshark使用

文章目录 环境文档用途详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 8,Linux x86-64 Red Hat Enterprise Linux 7,Linux x86-64 SLES 12,银河麒麟 &#xff08;鲲鹏&#xff09;,银河麒麟 &#xff08;X86_64&#xff09;,银河麒麟&#xff08;龙…

Eigen矩阵存储顺序以及转换

一、Eigen矩阵存储顺序 在矩阵运算和线性代数中,"行优先"(Row-major)和"列优先"(Column-major)是两种不同的存储方式,它们决定了多维数组(如矩阵)在内存中的布局顺序。 1. 行优先(Row-major) 定义:矩阵按行顺序存储在内存中,即第一行的所有元…

快速部起一个Openwhisk平台,使用telego k8s服务部署能力内网部署

Telego 简介与 OpenWhisk 部署实践 概述 Telego 是一个用于便携式 Kubernetes 部署的工具&#xff0c;旨在解决容器镜像拉取中的网络代理问题。本文档描述了如何通过 Telego 将 Apache OpenWhisk&#xff08;一个 Serverless 计算平台&#xff09;部署到 Kubernetes 集群&…

LockSupport与Condition解析

本章我们介绍两个Java 并发包中用于线程协作的工具--LockSupport和Condition LockSupport&#xff1a; Java 并发包&#xff08;java.util.concurrent.locks&#xff09;提供了基于许可&#xff08;permit&#xff09;的线程阻塞和唤醒机制--LockSupport 对于LockSupport是通…

【机器学习基础】机器学习入门核心算法:逻辑回归(Decision Tree)

机器学习入门核心算法&#xff1a;逻辑回归&#xff08;Decision Tree&#xff09; 一、算法逻辑1.1 基本概念1.2 算法流程 二、算法原理与数学推导2.1 特征选择指标信息熵&#xff08;ID3算法&#xff09;信息增益&#xff08;Information Gain&#xff09;信息增益率&#xf…

网络编程3

管道的性质 读缓冲区为空&#xff0c;read阻塞写缓冲区为空&#xff0c;write阻塞一端先close&#xff0c;另一端继续read&#xff0c;read不阻塞&#xff0c;立刻返回0一端先close&#xff0c;另一端继续write&#xff0c;write会触发SIGPIPE信号&#xff0c;进程异常终止 soc…

influxdb时序数据库

以下概念及操作均来自influxdb2 官方文档 InfluxDB2 is the platform purpose-built to collect, store, process and visualize time series data. Time series data is a sequence of data points indexed in time order. Data points typically consist of successive meas…

洛谷 P3372 【模板】线段树 1

【题目链接】 洛谷 P3372 【模板】线段树 1 【题目考点】 1. 线段树 2. 树状数组 【解题思路】 本题要求维护区间和&#xff0c;实现区间修改、区间查询。 可以使用树状数组或线段树完成该问题&#xff0c;本文仅介绍使用线段树的解法。 解法1&#xff1a;线段树 线段树…

软件更新 | TSMaster 202504 版本已上线!三大功能让车载测试更智能

车载测试的智能化时代正在加速到来&#xff01;TSMaster 202504 版本正式发布&#xff0c;本次更新聚焦以太网通信与数据高效处理&#xff0c;带来三大核心功能升级—以太网报文信息过滤、XCP on Ethernet支持、按时间范围离线回放&#xff0c;助力工程师更精准、更灵活地完成测…

java-单列集合list与set。

集合定位&#xff1a;存储数据的容器 与数组的区别&#xff1a; 数组只能存储同种数据类型数据&#xff0c;集合可以存储不同类型的数据。 数组的长度一旦创建长度不可变&#xff0c;集合的长度是可变的 数组的操作单一&#xff0c;集合的操作比较丰富&#xff08;增删改查&…

ai之pdf解析工具 PPStructure 还是PaddleOCR

目录 重点是四 先用 PPStructure 版面分析,分成不同的块儿,再选用 PaddleOCR、或PPStructure基础路径OCR模型配置OCR模型配置GPU配置硬件配置性能配置一、框架选型对比分析1. **PaddleOCR核心能力**2. **PP-Structure核心能力**3. **选型结论**二、错误根因分析与修复方案1. …

Android计算机网络学习总结

TCP vs UDP 核心区别​​ ​题目​&#xff1a;TCP为什么称为可靠传输协议&#xff1f;UDP在哪些场景下比TCP更具优势&#xff1f; ​得分要点​&#xff1a; ​可靠性机制​ 三握四挥建立可靠连接确认应答&#xff08;ACK&#xff09; 超时重传滑动窗口流量控制拥塞控制&…

深入解析Java组合模式:构建灵活树形结构的艺术

引言&#xff1a;当对象需要树形组织时 在日常开发中&#xff0c;我们经常需要处理具有层次结构的对象集合。比如&#xff1a; 文件系统中的文件夹与文件GUI界面中的容器与控件企业组织架构中的部门与员工 这类场景中的对象呈现明显的整体-部分层次结构&#xff0c;如何优雅…