【秦九紹算法】小紅的 gcd

題目

牛客網:小紅的 gcd
在這里插入圖片描述

題目分析

我們知道,求gcd就用歐幾里得算法(輾轉相除法):gcd(a,b)=gcd(b,a mod b)。但是這題的a非常大,最大是一個1e6位數,無法使用任何數據類型存儲。如果使用高精度計算的話,需要逐位計算,會超時。

一個十進制數字例如 123 123 123 是可以拆分成 1 ? 10 2 + 2 ? 10 1 + 3 ? 10 0 1*10^2 + 2*10^1 + 3*10^0 1?102+2?101+3?100,而且歐幾里得算法會不斷對a取模,我們又知道可以在任意位置取模的性質。根據這兩個特性,我們就可以通過秦九紹算法將 a 這個數字拆分10的一元多項式,在逐位計算a的同時計算a mod b。

a m o d b = ( ∑ i = 0 n ? 1 d i × 10 i ) m o d b a \bmod b = \left( \sum_{i=0}^{n-1} d_i \times 10^i \right) \bmod b amodb=(i=0n?1?di?×10i)modb
其中 d i d_i di? a a a 的第 i i i 位數字。

秦九紹算法

是一種多項式求值的高效算法。它的核心思想是通過嵌套乘法和加法來減少計算次數,將多項式求值的時間復雜度 O ( n 2 ) O(n^2) O(n2)優化到 O ( n ) O(n) O(n)

對于一個多項式: f ( x ) = a n x n + a n ? 1 x n ? 1 + a n ? 2 x n ? 2 + ? + a 1 x 1 + a 0 x 0 f(x) = a_n x^n + a_{n-1} x^{n-1} + a_{n-2} x^{n-2} + \dots + a_1 x^1 + a_0 x^0 f(x)=an?xn+an?1?xn?1+an?2?xn?2+?+a1?x1+a0?x0

秦九韶算法將其改寫為嵌套形式:

f ( x ) = ( a n x n ? 1 + a n ? 1 x n ? 2 + a n ? 2 x n ? 3 + ? + a 1 ) x + a 0 = ( ( a n x n ? 2 + a n ? 1 x n ? 3 + a n ? 2 x n ? 4 + ? + a 2 ) x + a 1 ) x + a 0 ? = ( … ( ( a n x + a n ? 1 ) x + a n ? 2 ) x + ? + a 2 ) x + a 1 ) x + a 0 \begin{aligned} f(x) &= (a_n x^{n-1} + a_{n-1} x^{n-2} + a_{n-2} x^{n-3} + \dots + a_1 )x + a_0 \\ &= \left( (a_n x^{n-2} + a_{n-1} x^{n-3} + a_{n-2} x^{n-4} + \dots + a_2 )x + a_1 \right)x + a_0 \\ &\ \, \vdots \\ &= \left( \dots \left( (a_n x + a_{n-1} )x + a_{n-2} \right)x + \dots + a_2 \right)x + a_1 )x + a_0 \end{aligned} f(x)?=(an?xn?1+an?1?xn?2+an?2?xn?3+?+a1?)x+a0?=((an?xn?2+an?1?xn?3+an?2?xn?4+?+a2?)x+a1?)x+a0???=(((an?x+an?1?)x+an?2?)x+?+a2?)x+a1?)x+a0??

示例:
在這里插入圖片描述

AC代碼

#include<iostream> using namespace std;string a; 
int b;int calc()
{long long ret = 0;for(auto ch:a){ret = (ret * 10 + ch - '0') % b;}return ret;
}int gcd(int a, int b)
{return b == 0 ? a : gcd(b,a%b);	
}int main()
{cin >> a >> b;cout << gcd(calc(),b) << endl;return 0;
}

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

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

相關文章

AWS服務監控之EC2內存監控

首先在IAM里找到角色&#xff0c;創建角色&#xff0c;選擇EC2 然后在被監控的機器上安裝cloudwatch-agent 官方鏈接在本地服務器上安裝 CloudWatch 代理 - Amazon CloudWatch wget https://s3.amazonaws.com/amazoncloudwatch-agent/redhat/amd64/latest/amazon-cloudwatch-a…

鴻蒙 ArkWeb 和 H5混編開發

ArkWeb Web 相關標準技術(HTML/CSS/JS)&#xff0c;是業內支持性最廣泛的技術&#xff0c;可以在最廣泛的平臺下實現“一次編寫到處運行”&#xff1b;大部分對性能無需極致要求的應用頁面&#xff0c;都可以使用 Web 技術來實現。 鴻蒙 ArkWeb Kit&#xff08;方舟 Web&…

設計模式-迪米特法則(Law of Demeter, LoD)

迪米特法則&#xff08;Law of Demeter, LoD&#xff09; 別名&#xff1a;最少知識原則&#xff08;Least Knowledge Principle&#xff09; 核心思想&#xff1a;一個對象應盡可能少地與其他對象發生交互&#xff0c;只與直接的朋友&#xff08;成員變量、方法參數、方法返回…

python獲取AB直線間任意一點經緯度

獲取AB直線間任意一點經緯度 1、目標 已知A點經緯度,距離;B點經緯度,距離,如果C點在AB之間,且知道C點距離,求C點的經緯度信息。 目標:在AB這條直線上,根據給定的距離(從A點開始沿直線到某點的距離)來求該點的經緯度。 2、方法 首先計算AB的總長度(大圓距離),…

Android實戰——系統字體庫加載流程

Android 系統字體庫指的是在Android設備上用于顯示文本的字體集合。隨著Android系統的更新,其對字體的支持也日益增強,允許開發者和用戶更靈活地定制界面文字顯示。 一、字體庫介紹 1、字體庫文件 字體庫文件是指存儲字體數據的文件,這些文件包含了創建文本字符所需的所有…

嵌入式樂鑫音頻項目“無聲”問題深度調試復盤與方法論總結

前言&#xff1a;一場典型的“工程師尋蹤之旅” 本次調試始于一個看似簡單卻極其頑固的問題&#xff1a;在一個基于樂鑫ESP-ADF&#xff08;音頻開發框架&#xff09;的DuerOS示例項目中&#xff0c;移植到M5Stack ATOMIC Echo Base硬件上后&#xff0c;程序能夠成功編譯、燒錄…

地下安全防線:電纜通道防外破地釘如何守護城市隱形生命線

在繁華都市的柏油馬路之下、在靜謐鄉村的泥土深處&#xff0c;縱橫交錯的地下管線如同城市與鄉村的 “隱形生命線”&#xff0c;承載著電力輸送、供水供氣、通信傳輸等重要功能&#xff0c;默默維系著現代社會的正常運轉。然而&#xff0c;這條 “生命線” 正面臨著諸多潛在威脅…

linux時間同步方案

yum install chrony -y # 配置 chrony 使用國內服務器 sed -i s/^pool.*pool.ntp.org/#&/ /etc/chrony.conf cat >> /etc/chrony.conf <<EOF server ntp.aliyun.com iburst server ntp.tencent.com iburst server ntp.ntsc.ac.cn iburst server time1.cloud.t…

C語言筆記(鵬哥)上課板書+課件匯總(KMP算法的動態規劃簡易處理+字符函數和字符串函數)

一、目錄 kmp動態規劃簡易處理next數組字符函數與字符串函數 一、目錄二、引言C語?標準庫中提供了?系列庫函數 三、字符分類函數&#xff08;字符相關的函數&#xff09;推薦一個網站 四、字符轉換函數&#xff08;字符相關的函數&#xff09;五、strlen&#xff08;字符串相…

Java大模型開發入門 (13/15):擁抱官方標準 - Spring AI框架入門與實踐

前言 到目前為止&#xff0c;我們整個系列的旅程都是在功能強大的LangChain4j框架上構建的。它就像一個裝備齊全的“瑞士軍刀”&#xff0c;為我們提供了構建RAG和Agents所需的所有底層和高層工具。 然而&#xff0c;在Java企業級開發的世界里&#xff0c;有一個名字我們永遠…

Github搜索案例

今天的內容是這個案例的實現&#xff0c;以及其中涉及到的內容&#xff0c;需要全部掌握&#xff0c;比如ref&#xff0c;受控組件&#xff0c;props在組件之中的傳遞&#xff0c;以及Pubsub包的使用這些前端React框架有關的內容。現在進入正題 1.github搜索案例&#xff08;a…

Vue3學習(生命周期,hooks,axios的簡單講解)

一&#xff0c;前言 繼續努力&#xff0c;南方見。 二&#xff0c;生命周期 1.對生命周期的理解 例如&#xff1a;人的生命周期&#xff0c;出生&#xff0c;經歷&#xff0c;死亡 組件的話就是&#xff0c;創建&#xff0c;掛載&#xff0c;更新&#xff0c;銷毀。***在特…

Pytorch實戰四 基于 VGG net 搭建一個串聯的神經網絡結構

系列文章目錄 文章目錄 系列文章目錄前言一、VGG類的搭建1.源碼2.初始化類2.1 初始化函數2.2 前向傳播函數 forward(self,x) 二、卷積補充卷積 前言 對于標準的 VGG net 輸入圖像的尺寸是 24 x 24,進行 32 維的下采樣之后得到一個 7 x 7 的特征圖&#xff0c;然后用 FC 層完成分…

大學專業解讀——計算機

我們繼續&#xff0c;講講排名第二流行的新工科專業——計算機。說到計算機&#xff0c;可能所有人都知道&#xff0c;但具體到細分的專業類別&#xff0c;除了計算機科學&#xff0c;其實大多數人都是不了解的。 序&#xff1a; 計算機主要有如下幾個專業&#xff1a; 計算機…

Bootstrap 5學習教程,從入門到精通, Bootstrap 5 列表組(List Group)語法知識點及案例(14)

Bootstrap 5 列表組(List Group)語法知識點及案例 一、列表組基礎語法 列表組是Bootstrap中用于顯示一系列內容的靈活組件&#xff0c;常用于顯示菜單、導航或任何項目列表。 基本列表組結構 <ul class"list-group"><li class"list-group-item&quo…

FPGA基礎 -- Verilog 命名事件

Verilog 的“命名事件&#xff08;Named Events&#xff09;”機制 進行一次系統、專業的培訓。該機制在 Verilog 中是比較冷門但重要的仿真控制特性&#xff0c;主要用于 模塊間同步、行為仿真觸發、事件通信&#xff0c;在復雜的 Testbench、行為模型中尤為重要。 一、命名事…

《Go語言圣經》結構體

《Go語言圣經》結構體 一、結構體指針的高效應用 在處理大型結構體時&#xff0c;為避免內存復制&#xff0c;通常使用指針傳遞和返回結構體&#xff1a; // 通過指針傳入結構體&#xff0c;避免值拷貝 func Bonus(e *Employee, percent int) int {return e.Salary * percen…

Ascend上如何進行帶寬測試

1 工具安裝 1.1 下載鏈接 https://www.hiascend.com/developer/download/community/result?moduledl%2Bcann 1.2 安裝指令&#xff1a; ./Ascend-mindx-toolbox_{version}_linux-{arch}.run --install設置環境變量&#xff1a; source /usr/local/Ascend/toolbox/set_env.…

生產BUG集

磁盤達到閾值導致ES無法刪除數據 method [POST], host [http://xx.xxx.xxx.xxx:9200], URI [/security_event/_delete_by_query?slices1&requests_per_second-1&ignore_unavailablefalse&expand_wildcardsopen&allow_no_indicestrue&ignore_throttledtru…

基于FastAPI與Selenium的智能開關狀態管理系統實踐

引言 在工業物聯網&#xff08;IIoT&#xff09;與自動化控制場景中&#xff0c;設備狀態的實時監控與自然語言指令執行是提升效率的關鍵。本文將介紹一種基于 FastAPI 和 Selenium 的智能設備狀態管理系統&#xff0c;通過大語言模型&#xff08;LLM&#xff09;解析用戶指令…