洛古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.mzph.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…