洛古B4158 [BCSP-X 2024 12 月小學高年級組] 質數補全(線性篩/dfs)

B4158 [BCSP-X 2024 12 月小學高年級組] 質數補全 - 洛谷

思路1:線性篩,字符串匹配,枚舉

質數篩選

要解決這個問題,首先得找出指定范圍內(這里是 1 到 10000000)的所有質數。常用的質數篩選算法有埃拉托斯特尼篩法(埃氏篩)和歐拉篩法(線性篩),本題建議采用的是歐拉篩法,其時間復雜度為?O(n),具體步驟如下:

  • 初始化一個布爾類型的數組?vis,用于標記每個數是否為質數。把?vis[0]?和?vis[1]?標記為非質數(因為 0 和 1 不是質數)。
  • 從 2 開始遍歷到 10000000,對于每個數?i
    • 若?vis[i]?為?false,說明?i?是質數,將其存儲到質數數組(第一段代碼是?prime?數組,第二段代碼是?primes?向量)中。
    • 遍歷已找到的質數,將?i?與這些質數的乘積標記為非質數。若?i?能被當前質數整除,就停止內層循環,這能保證每個合數只被其最小質因數篩去一次,從而實現線性時間復雜度。

字符串匹配判斷

在找出所有質數后,需要判斷輸入的帶有?*?通配符的字符串是否能與某個質數匹配。可以定義一個判斷函數具體步驟如下:

  • 首先檢查兩個字符串的長度是否相同,若不同則直接返回?false
  • 接著遍歷兩個字符串的每個字符:
    • 若對應位置的字符相同,繼續檢查下一個字符。
    • 若輸入字符串中對應位置的字符是?*,表示該位置可以匹配任意字符,繼續檢查下一個字符。
    • 若對應位置的字符既不相同,輸入字符串中對應位置的字符也不是?*,則返回?false
  • 若遍歷完所有字符都沒有返回?false,則返回?true

代碼:
?

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool vis[10000005];
int n;
vector<int> primes;void euler(){vis[0]=vis[1]=true;for(int i=2;i<=10000000;++i){if(!vis[i])primes.push_back(i);for(int j=0;j<primes.size()&&i*primes[j]<=10000000;++j){vis[i*primes[j]]=true;if(i%primes[j] == 0) break;}}
}bool check(string a,string b){if(a.size()!=b.size())return false;for(int i=0;i<a.size();++i){if(a[i]!=b[i]&&b[i]!='*')return false;}return true;
}int main(){int n;cin>>n;euler();while(n--){string s;cin>>s;bool flag = false;for(auto i:primes){if(check(to_string(i),s)){cout<<i<<endl;flag = true;break;}}if (!flag) cout<<"-1"<<endl;}return 0;
}

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

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

相關文章

一周學會Pandas2 Python數據處理與分析-Pandas2讀取Excel

鋒哥原創的Pandas2 Python數據處理與分析 視頻教程&#xff1a; 2025版 Pandas2 Python數據處理與分析 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili Excel格式文件是辦公使用和處理最多的文件格式之一&#xff0c;相比CSV文件&#xff0c;Excel是有樣式的。Pandas2提…

NVIDIA H100 vs A100:新一代GPU架構性能對比分析

一、核心架構演進對比 ?Ampere架構&#xff08;A100&#xff09;?采用臺積電7nm工藝&#xff0c;集成540億晶體管&#xff0c;配備6,912個CUDA核心和432個第三代Tensor Core&#xff0c;支持FP16、TF32和INT8精度計算。其顯存子系統采用HBM2e技術&#xff0c;80GB版本帶寬可…

保護PCBA的不同方法:噴三防漆 vs 鍍膜

PCBA&#xff08;印刷電路板組件&#xff09;的防護工藝中&#xff0c;噴三防漆和鍍膜&#xff08;如Parylene氣相沉積&#xff09;是兩種常見技 術。它們在防護目的上類似&#xff0c;但在具體實現方式和應用場景上有顯著差異。以下從外觀、工藝、性 能、物理性質和成本五個…

VitePress 項目部署 cloudflare page 提示 npm run build 錯誤

構建的錯誤信息如下&#xff1a; 09:52:57.975 ? YN0000: Done with warnings in 3s 120ms 09:52:58.072 Executing user command: npm run build 09:52:58.817 npm ERR! Missing script: "build" 09:52:58.818 npm ERR! 09:52:58.818 npm ERR! To see a list of …

C++學習之ORACLE③

1.集合運算符 查詢部門號是10和20的員工信息&#xff1a; &#xff1f;思考有幾種方式解決該問題 &#xff1f; SQL> select * from emp where deptno in(10, 20) SQL> select * from emp where deptno10 or deptno20 集合運算&#xff1a; Select * from emp …

人工智能之數學基礎:復矩陣

本文重點 復矩陣是線性代數中以復數為元素的矩陣,是實矩陣在復數域上的自然推廣。與實矩陣相比,復矩陣在數學性質、運算規則和應用場景上具有獨特性,尤其在量子力學、信號處理、控制理論等領域發揮關鍵作用。 復矩陣的定義與表示 定義:復矩陣指的是元素含有復數的矩陣。…

華清遠見成都中心嵌入式學習總結

一、Linux 基礎入門 課程首先介紹了 Linux 系統的六大特性&#xff0c;包括開源、免費、可裁剪等核心優勢。重點講解了文件系統結構&#xff0c;強調根目錄&#xff08;/&#xff09;作為唯一入口的樹狀結構。通過實操學習了 pwd、ls、cd 等基礎命令&#xff0c;掌握了絕對路徑…

linux安裝ollama

倆種方式都可 一、linux通過docker安裝ollama鏡像 1.下載安裝ollama鏡像 # 安裝 Docker sudo yum install docker sudo systemctl start docker#docker查看所有容器 docker ps -a # 查看所有容器# docker查看指定容器 docker ps -a |grep ollama# 創建模型存儲目錄&#xff…

Redis 學習目標

&#x1f3af; Redis 學習目標&#xff08;開發者視角&#xff09; ? 一、學習完成后能掌握的核心能力&#xff1a; 分類具體內容&#x1f4e6; 基礎能力熟練掌握 Redis 五大數據結構&#xff08;String、List、Hash、Set、ZSet&#xff09;&#xff0c;會用也會選對場景&am…

gerrit配置及使用git-lfs

gerrit服務器端配置 下載git-lfs插件 登錄Dashboard [Jenkins] (gerritforge.com)&#xff0c;下載對應版本的插件 配置gerrit 將下載的lfs.jar插件放到${GERRIT_SITE}/plugins/下面為所有倉庫啟用git-lfs 此步驟需要修改 All-projects 倉庫配置&#xff0c;步驟如下 1、克隆倉…

深入理解 Linux PATH 環境變量:配置與優化!!!

深入理解 Linux PATH 環境變量&#xff1a;配置與優化 &#x1f680; 歡迎來到 Linux 環境變量的奇妙世界&#xff01;今天我們來聊聊那個讓命令行如魚得水的幕后英雄——PATH 環境變量&#xff01;&#x1f60e; 通過這篇博客&#xff0c;你將學會如何配置它、優化它&#xff…

如何在AMD MI300X 服務器上部署 DeepSeek R1模型?

DeepSeek-R1憑借其深度推理能力備受關注&#xff0c;在語言模型性能基準測試中可與頂級閉源模型匹敵。 AMD Instinct MI300X GPU可在單節點上高效運行新發布的DeepSeek-R1和V3模型。 用戶通過SGLang優化&#xff0c;將MI300X的性能提升至初始版本的4倍&#xff0c;且更多優化將…

簡化DB操作:Golang 通用倉庫模式

介紹 本代碼包提供一個用于數據庫操作的通用倉庫 (GenericRepository)&#xff0c;利用 Golang 和 GORM (Go ORM) 實現。該倉庫設計用于簡化數據庫的 CRUD (創建、讀取、更新、刪除) 操作&#xff0c;支持批處理、沖突處理、分頁查詢等高級功能。 主要功能 創建記錄 (Create…

JavaWeb 課堂筆記 —— 08 請求響應

本系列為筆者學習JavaWeb的課堂筆記&#xff0c;視頻資源為B站黑馬程序員出品的《黑馬程序員JavaWeb開發教程&#xff0c;實現javaweb企業開發全流程&#xff08;涵蓋SpringMyBatisSpringMVCSpringBoot等&#xff09;》&#xff0c;章節分布參考視頻教程&#xff0c;為同樣學習…

雙引擎驅動:解密音視頻體驗的QoS技術底座與QoE感官革命

QoS 定義&#xff1a;QoS&#xff08;Quality of Service&#xff0c;服務質量&#xff09;衡量音視頻傳輸技術層面的性能表現&#xff0c;聚焦網絡傳輸和系統處理能力&#xff0c;通過客觀指標量化服務質量。核心指標 碼率/帶寬&#xff1a;數據傳輸速率上限&#xff0c;直接…

Stable Diffusion + Contronet,調參實現LPIPS最優(帶生成效果+指標對比)——項目學習記錄

目錄 前言 一、數據集&#xff1a;圖像文本&#xff0c;部分選取于DeepFashion 二、優化一&#xff0c;img2img 三、優化二&#xff0c;微調sd參數 四、優化三&#xff0c;dreamshaper優化 五、優化四&#xff0c;sdv1.5contronet 六、問題探索歷程 1. 從 SDXL 到輕量化模…

SQL 不走索引的常見情況

在 SQL 查詢中&#xff0c;即使表上有索引&#xff0c;某些情況下數據庫優化器也可能決定不使用索引。以下是常見的不走索引的情況&#xff1a; 1. 使用否定操作符 NOT IN ! 或 <> NOT EXISTS NOT LIKE 2. 對索引列使用函數或運算 -- 不走索引 SELECT * FROM user…

數據庫主從延遲全解析:原因、影響與解決之道

目錄 一、引言&#xff1a;理解數據庫主從架構 二、數據庫主從延遲的定義與測量 2.1 主從延遲的技術定義 2.2 如何測量主從延遲 2.3 主從延遲對系統的影響 三、主從延遲的常見原因分析 3.1 網絡延遲因素 3.1.1 網絡質量與帶寬限制 3.1.2 地理位置分布造成的延遲 3.2 …

分治-歸并系列一>翻轉對

目錄 題目&#xff1a;解析&#xff1a;策略一&#xff1a; 代碼&#xff1a;策略二&#xff1a; 代碼&#xff1a; 題目&#xff1a; 鏈接: link 這題和逆序對區別點就是&#xff0c;要找到前一個元素是后一個元素的2倍 先找到目標值再&#xff0c;繼續堆排序 解析&#xff1…

從0到1打造一套適合自己接單的腳手架05自動化創建表

上一篇我們是手動創建的表&#xff0c;感覺不方便&#xff0c;后續如果要做成產品在部署的時候一個個的創建表太麻煩了&#xff0c;我們讓ai來自動創建表&#xff0c;輸入如下提示詞 現在這種單獨去navicate執行也不方便&#xff0c;我希望是有一個目錄里存放的表結構的語句&a…