D : DS查找——折半查找求平方根

Description

假定輸入y是整數,我們用折半查找來找這個平方根。在從0到y之間必定有一個取值是y的平方根,如果我們查找的數x比y的平方根小,則x2<y,如果我們查找的數x比y的平方根大,則x2>y,我們可以據此縮小查找范圍,當我們查找的數足夠準確時(比如滿足|x2-y|<0.00001),就可以認為找到了y的平方根。

比如求5的平方根x,則x一定滿足 0<=x<=5,取x為(5+0)/2=2.5,因為2.5的平方為6.25>5,所以x一定小于2.5,也即x滿足0<=x<=2.5,取x為1.25,以此類推

X的范圍 X的取值 x2 x2-y
0 5 2.5 6.25 1.25
0 2.5 1.25 1.5625 -3.4375
1.25 2.5 1.875 3.515625 -1.484375
1.875 2.5 2.1875 4.78515625 -0.21484375
2.1875 2.5 2.34375 5.493164063 0.493164063
2.1875 2.34375 2.265625 5.133056641 0.133056641
2.1875 2.265625 2.2265625 … …
最后求得5的平方根為2.236

溫馨提示: 計算過程中為確保精確性,計算變量的類型都用double

保留小數位數請采用printf(“%.3f\n”,x) 的格式輸出或cout<<fixed<<setprecision(3)<<x<<endl;

程序框架參考平時練習中折半查找的方法

Input

第 1 行輸入一個整數n < 100,表示有n個數

從第 2 行起到第n+1行輸入n個整數

Output

輸出n個數的平方根,精確到小數點后三位。

Sample

#0

Input

2
13
5

Output

3.606
2.236

AC代碼

#include<iostream>
#include<cstring>
#include<algorithm>
#include <iomanip>
using namespace std;
const int N = 10010;
int arr[N];bool check(double x,double target)
{return x * x > target;
}double BinarySearch(double target, double l, double r)
{const double eps = 1e-6;   // eps 表示精度,取決于題目對精度的要求while (r - l > eps){double mid = (l + r) / 2;if (check(mid,target)) r = mid;//check函數判斷是否滿足條件else l = mid;}return l;
}int main()
{int t;cin >> t;while (t--) {double x;cin >> x;cout << fixed << setprecision(3) << BinarySearch(x,0,x) << endl;}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211736.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211736.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211736.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

stu05-前端的幾種常用開發工具

前端的開發工具有很多&#xff0c;可以說有幾十種&#xff0c;包括記事本都可以作為前端的開發工具。下面推薦的是常用的幾種前端開發工具。 1.DCloud HBuilder&#xff08;輕量級&#xff09; HBuilder是DCloud&#xff08;數字天堂&#xff09;推出的一款支持HTML5的web開發…

硬件開發筆記(十四):RK3568底板電路LVDS模塊、MIPI模塊電路分析、LVDS硬件接口、MIPI硬件接口詳解

若該文為原創文章&#xff0c;轉載請注明原文出處 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/134634186 紅胖子網絡科技博文大全&#xff1a;開發技術集合&#xff08;包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬…

linux 關于$-的解釋(帖子搜索合集)

在學習Linux的時候&#xff0c;今天遇到了$-&#xff0c;什么意思呢&#xff1f;網上搜索了一些帖子&#xff1a; 帖子1&#xff1a; linux命令 $- 是什么意思 $- 是什么意思&#xff1f;有什么用&#xff1f;可以判斷什么交互式shell&#xff1f; $-記錄著當前設置的shell…

軟考高級備考-系統架構師(機考后新版教材的備考過程與資料分享)

軟考高級-系統架構設計師 考試復盤1.考試結果2.備考計劃3.個人心得 資料分享 考試復盤 1.考試結果 三科壓線過&#xff0c;真是太太太太太太太幸運了。上天對我如此眷顧&#xff0c;那不得不分享下我的備考過程以及一些備考資料&#xff0c;幫助更多小伙伴通過考試。 2.備考…

time模塊(python)

一.sleep休眠 [rootrhel8 day04]# vim demo01_time.py import time def banzhuan():print("搬磚")time.sleep(3.5) #讓程序休眠3.5秒print("結束")banzhuan()[rootrhel8 day04]# python3 demo01_time.py 搬磚 結束運行時&#xff0c;會發現程序中間暫停…

【3DsMax】制作簡單的骨骼動畫

效果 步驟 首先準備4個板子模型展開放置好 添加一個4段的骨骼 選中其中的一塊板子添加蒙皮命令 在蒙皮的參數面板中&#xff0c;設置每塊板子對應哪塊骨骼 設置好后你可以發現此時就已經可以通過骨骼來控制模型了 接下來就可以制作動畫 點擊左下角“時間配置”按鈕 設置一下動…

HarmonyOS--ArkTS(1)--基本語法(1)

目錄 基本語法概述 聲明式UI描述 自定義組件 創建自定義組件 自定義組件的結構--struct &#xff0c;Component&#xff0c;build()函數 生命周期 基本語法概述 裝飾器&#xff1a; 用于裝飾類、結構、方法以及變量&#xff0c;并賦予其特殊的含義。如上述示例中Entry、C…

VSCode安裝與使用

VS Code 安裝及使用 1、下載 進入VS Code官網&#xff1a;地址&#xff0c;點擊 DownLoad for Windows下載windows版本 注&#xff1a; Stable&#xff1a;穩定版Insiders&#xff1a;內測版 2、安裝 雙擊安裝包&#xff0c;選擇我同意此協議&#xff0c;再點擊下一步 選擇你…

SQL Server查詢計劃(Query Plan)——SQL處理過程

6. 查詢計劃(Query Plan) 6.1. SQL處理過程 就SQL語句的處理過程而言,各關系庫間大同小異,尤其是商業庫之間實現機制和細節差別更小些,其功能及性能支持方面也更加強大和完善。SQL Server作為商業庫中的后起之秀,作為SQL語句處理過程的主要支撐和保障,其優化器及相關機…

【Vulnhub 靶場】【hacksudo: ProximaCentauri】【簡單 - 中等】【20210608】

1、環境介紹 靶場介紹&#xff1a;https://www.vulnhub.com/entry/hacksudo-proximacentauri,709/ 靶場下載&#xff1a;https://download.vulnhub.com/hacksudo/hacksudo-ProximaCentauri.zip 靶場難度&#xff1a;簡單 - 中等 發布日期&#xff1a;2021年06月08日 文件大小&…

第9節:Vue3 指令

如何在UniApp中使用Vue3的指令&#xff1a; <template> <view> <!-- 使用指令 --> <text v-show"isVisible" click"toggleVisibility">點擊隱藏/顯示</text> <button v-on:click"incrementCount">點擊…

【LeetCode:70. 爬樓梯 | 遞歸 -> 記憶化搜索 -> DP】

&#x1f680; 算法題 &#x1f680; &#x1f332; 算法刷題專欄 | 面試必備算法 | 面試高頻算法 &#x1f340; &#x1f332; 越難的東西,越要努力堅持&#xff0c;因為它具有很高的價值&#xff0c;算法就是這樣? &#x1f332; 作者簡介&#xff1a;碩風和煒&#xff0c;…

【圖片版】計算機組成原理考前復習題【第3章 存儲系統-2(Cache)】

目錄 前言 考前復習題&#xff08;必記&#xff09; 結尾 前言 在計算機組成原理的學習過程中&#xff0c;我們深入探索了計算機系統概述這一重要領域。計算機系統作為現代科技的核心&#xff0c;是整個計算機科學的基石。我們將學到的知識與理論轉化為了能夠解決現實問題…

web api性能測試使用wrk

web api性能測試 這邊簡單的給出shell腳本 注意先安裝&#xff1a;wrk和gnuplot #!/bin/bash# Copyright 2020 Lingfei Kong <colin404foxmail.com>. All rights reserved. # Use of this source code is governed by a MIT style # license that can be found in the…

vue 學習 -- day39(vue3 — reactive 對比 ref)

從定義數據角度對比&#xff1a; ref用來定義&#xff1a;基本類型數據。reactive用來定義&#xff1a;對象&#xff08;或數組&#xff09;類型數據。備注&#xff1a;ref也可以用來定義對象&#xff08;或數組&#xff09;類型數據, 它內部會自動通過reactive轉為代理對象。從…

如何防止惡意調用和攻擊對抖音商品詳情API的影響?

防止惡意調用和攻擊對抖音商品詳情API的影響是開發者和平臺必須關注的問題。惡意調用和攻擊可能導致服務中斷、數據泄露或其他安全問題&#xff0c;對平臺和用戶造成損失。本文將介紹一些常見的惡意調用和攻擊方式&#xff0c;并提出相應的防范措施&#xff0c;以確保抖音商品詳…

JavaScript函數概念、聲明、調用

JavaScript函數是一段可以重復使用的代碼塊&#xff0c;用于執行特定的任務。函數封裝了一定的邏輯&#xff0c;可以接收輸入參數并返回結果&#xff0c;使得代碼更加模塊化&#xff0c;可讀性更高。 函數聲明可以使用function關鍵字來創建&#xff0c;通常包括函數名、參數列…

python畫動漫形象(魔法少女小圓曉美焰,super beautiful)

1.源代碼 import turtle as te import time WriteStep 15 # 貝塞爾函數的取樣次數 Speed 5 Width 600 # 界面寬度 Height 500 # 界面高度 Xh 0 # 記錄前一個貝塞爾函數的手柄 Yh 0 def Bezier(p1, p2, t): # 一階貝塞爾函數 return p1 * (1 - t) p2 * t def Bezier_2(x1…

stu06-VSCode里的常用快捷鍵

Alt Z&#xff1a;文字自動換行。當一行的文字太長時&#xff0c;可以使用。或者查看→自動換行Alt Shift ↓ &#xff1a;快速復制當前行到下一行Alt Shift ↑ &#xff1a;快速復制當前行到上一行Alt B&#xff1a;在默認瀏覽器中打開當前.html文件Ctrl Enter&#xf…

深入學習之anaconda、pytorch、cuda安裝

文章目錄 1. 安裝CUDA與CUDNN2. Anaconda安裝PyTorch3. notebook添加自己創建的環境4. Anaconda安裝相關的庫5. GPU測試 1. 安裝CUDA與CUDNN csdn大佬安裝步驟 【CUDA】cuda安裝 &#xff08;windows版&#xff09; 查看此電腦的CUDA版本配置 自己電腦上GPU使用的詳細參數 n…