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
繁體地址,請注明出處:http://hk.pswp.cn/news/907231.shtml
英文地址,請注明出處:http://en.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;如何優雅…