欧拉计划 Project Euler 35 题解

欧拉计划 Problem 35 题解

  • 题干
  • 思路
  • code
    • 暴力
    • 筛法
    • rotate函数使用
      • 语法
      • 示例代码

题干

在这里插入图片描述

思路

一个很自然的思路就是暴力找,遍历一百万之内的所有数,也可以先把一百万以内所有的素数筛出来然后从中取选。这里我使用的是暴力算法。

code

暴力

#include <bits/stdc++.h>using namespace std;using ll = long long;bool check(int x) {if (x < 2) return false;for (int i = 2; i * i <= x; ++i) {if (x % i == 0) return false;}return true;
}void solve() {// 2 3 5 7 11 13 17 31 37 71 73 79 97 /*113 131 197 199 311 337 373 719 733 919 971 991 1193 1931 3119 3779 7793 7937 9311 9377 11939 19391 19937 37199 39119 71993 91193 93719 93911 99371 193939 199933 319993 331999 391939 393919 919393 933199 939193 939391 993319 999331 */// 共55个满足条件的int ans = 13;for (int i = 100; i <= 1000000; ++i) {string k = to_string(i);string s = k;if (!check(stoi(k))) continue; // 看一下初始数字是不是素数 不是就直接看下一个int sum = 1;s = s.substr(1) + s[0];while (s != k) {if (check(stoi(s))) ++sum;s = s.substr(1) + s[0];}if (sum == k.size()) {cout << i << " ";++ans;}}cout << "\n";cout << ans << "\n";}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int tt = 1; // cin >> tt;while (tt--) {solve();}return 0;
}

筛法

#include <bits/stdc++.h>using namespace std;using ll = long long;const int N = 1e6 + 1;int b[N];
bool a[N];int k = 1;
void EulerScreen() { // 欧拉筛一百万以内的素数memset(a, true, sizeof(a));a[1] = false; // 1 不是素数for (int i = 2; i <= N - 1; ++i) {if (a[i]) b[k++] = i; for (int j = 1; j <= k && i * b[j] <= N - 1; ++j) {a[i * b[j]] = false;if (i % b[j] == 0) break;}}
}// 检查是否是圆周素数
bool check(int x) {string s = to_string(x);int n = s.size();for (int i = 0; i < n; ++i) {if (!a[stoi(s)]) return false;rotate(s.begin(), s.begin() + 1, s.end());}return true;
}void solve() {int ans = 0;EulerScreen();for (int i = 1; i <= k - 1; ++i) {if (check(b[i])) {cout << b[i] << " ";++ans;}}cout <<"\n";cout << ans << "\n";}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int tt = 1; // cin >> tt;while (tt--) {solve();}return 0;
}

rotate函数使用

std::rotate 是 C++ 标准库中一个函数,用于将指定范围内的元素按照一定规则进行循环移动。
将 [first, last) 范围内的元素进行旋转,使得 middle 指向的元素变为新的第一个元素,其余元素按顺序向后移动,原本的第一个元素移到最后。

语法

std::rotate(first, middle, last);

其中参数含义如下

  • first: 要旋转的范围的起始迭代器。
  • middle: 新范围的第一个元素(原本是范围中的某个元素)。
  • middle: 新范围的第一个元素(原本是范围中的某个元素)。

示例代码

在这里插入图片描述

#include <bits/stdc++.h>using namespace std;using ll = long long;void solve() {vector<int> v = {1, 3, 5, 6, 8};rotate(v.begin(), v.begin() + 1, v.end());for (int x : v) {cout << x << " ";}// 输出3 5 6 8 1cout << "\n";
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int tt = 1; // cin >> tt;while (tt--) {solve();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch基础之注解的使用--003

Title 1.学习目标2.定义3.使用步骤4.结果 1.学习目标 针对源码中出现一些注解的问题&#xff0c;这里专门写一篇文章进行讲解。包括如何自定义注解&#xff0c;以及注意事项&#xff0c;相信JAVA中很多朋友业写过&#xff0c;但是今天写的是Python哦。。。 2.定义 在 Python…

C#编写的金鱼趣味小应用 - 开源研究系列文章

今天逛网&#xff0c;在GitHub中文网上发现一个源码&#xff0c;里面有这个金鱼小应用&#xff0c;于是就下载下来&#xff0c;根据自己的C#架构模板进行了更改&#xff0c;最终形成了这个例子。 1、 项目目录&#xff1b; 2、 源码介绍&#xff1b; 1) 初始化&#xff1b; 将样…

高效搭建Nacos:实现微服务的服务注册与配置中心

一、关于Nacos 1.1 简介 Nacos&#xff08;Dynamic Naming and Configuration Service&#xff09;是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统&#xff0c;特别是在微服务架构中。Nacos 提供了简单易用…

112、Qt MSVC编译Qtxlsx

先参考103、QT搭建Excel表环境-使用Qtxlsx库文档&#xff0c;下载xlsx源码以及安装perl环境 并配置VS2019和perl环境变量 Qtxlsx库源码下载&#xff1a;https://github.com/dbzhang800/QtXlsxWriter 解压至非中文路径下 打开Qt自带的MSVC 2019命令框进入文件夹并运行命令生成…

频域滤波为什么使用psf2otf函数?

MATLAB中circshift函数是psf2otf函数的核心&#xff0c;在MATLAB中circshift函数的原理分析——psf2otf函数的核心直观解释了为什么需要循环移位。 MATLAB提出了psf2otf函数&#xff0c;先做循环移位&#xff0c;再计算离散傅里叶变换。如果有空域的卷积核&#xff0c;通过这个…

PySide6 SQLite3 做的 电脑组装报价系统

一、数据库结构说明 1. 配件类别表 (component_categories) 字段名类型说明约束category_idINTEGER类别IDPRIMARY KEY, AUTOINCREMENTcategory_nameTEXT类别名称NOT NULL, UNIQUEdescriptionTEXT类别描述 2. 配件表 (components) 字段名类型说明约束component_idINTEGER配件…

Android 部分操作(待补充

新建的线性布局.xml文件&#xff0c;文件名是 linearlayout.xml&#xff0c;根元素设置LinearLayout&#xff1b; 对于线性布局&#xff0c;调整第一个元素相对于顶部的位置&#xff0c;通过属性 layout_marginTop 设置后调整第一个元素的位置&#xff0c;后边的元素会依次向…

Android笔试面试题AI答之Android基础(7)

Android入门请看《Android应用开发项目式教程》&#xff0c;视频、源码、答疑&#xff0c;手把手教 文章目录 1.Android开发如何提高App的兼容性&#xff1f;**1. 支持多版本 Android 系统****2. 适配不同屏幕尺寸和分辨率****3. 处理不同硬件配置****4. 适配不同语言和地区**…

CSS学习记录21

CSS 工具提示 通过CSS 创建工具提示&#xff08;Tooltip)。 当用户将鼠标指针移动到元素上时&#xff0c;工具提示通常用于提供关于某内容的额外信息&#xff1a; <style> /* Tooltip 容器 */ .tooltip {position: relative;display: inline-block;border-bottom: 1px …

2025经典的软件测试面试题(答案+文档)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 以下是软件测试相关的面试题及答案&#xff0c;希望对各位能有帮助&#xff01; 1、测试分为哪几个阶段? 一般来说分为5个阶段&#xff1a;单元测试、集成测试…

021-spring-springmvc

比较重要的部分 比较重要的部分 比较重要的部分 关于组件的部分 这里以 RequestMappingHandlerMapping 为例子 默认的3个组件是&#xff1a; org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping org.springframework.web.servlet.mvc.method.annotation.Requ…

Facebook 上的社群文化:连接与共享

随着社交媒体的普及&#xff0c;Facebook作为全球最大的社交平台之一&#xff0c;不仅改变了人们的沟通方式&#xff0c;还塑造了独特的社群文化。在Facebook上&#xff0c;用户可以轻松地与朋友、家人保持联系&#xff0c;同时也能加入兴趣相投的群组、参与讨论和共享内容。社…

语言模型的革命:大型概念模型(LCM)的崛起

在人工智能领域&#xff0c;Meta最近推出的一项重大突破正在引起研究人员和开发者的广泛关注&#xff1a;大型概念模型&#xff08;Large Concept Models&#xff0c;简称LCM&#xff09;。这一创新彻底改变了我们对语言模型的理解&#xff0c;并为未来AI技术的进展指明了新的方…

Python Polars快速入门指南:LazyFrames

前文已经介绍了Polars的Dataframe, Contexts 和 Expressions&#xff0c;本文继续介绍Polars的惰性API。惰性API是该库最强大的功能之一&#xff0c;使用惰性API可以设定一系列操作&#xff0c;而无需立即运行它们。相反&#xff0c;这些操作被保存为计算图&#xff0c;只在必要…

C# 读取多种CAN报文文件转换成统一格式数据,工具类:CanMsgRead

因为经常有读取CAN报文trace文件的需求&#xff0c;而且因为CAN卡不同、记录软件不同会导致CAN报文trace文件的格式都有差异。为了方便自己后续开发&#xff0c;我写了一个CanMsgRead工具类&#xff0c;只要提供CAN报文路径和CAN报文格式的选项即可将文件迅速读取转换为统一的C…

Redis 多机功能 — 复制、Sentinel及集群

Redis 的复制功能通过主从模式实现&#xff0c;允许用户为存储着目标数据库的服务器&#xff08;主服务&#xff09;创建多个拥有相同数据库副本的服务器&#xff08;从服务&#xff09;。让客户端的读请求可以分摊到从服务器中&#xff0c;从而提升性能。复制功能适合对数据一…

计算机网络 (14)数字传输系统

一、定义与原理 数字传输系统&#xff0c;顾名思义&#xff0c;是一种将连续变化的模拟信号转换为离散的数字信号&#xff0c;并通过适当的传输媒介进行传递的系统。在数字传输系统中&#xff0c;信息被编码成一系列的二进制数字&#xff0c;即0和1&#xff0c;这些数字序列能够…

leecode377.组合总和IV

本题其实是多重背包问题&#xff0c;对于价值和重量都是nums[i]的的物品&#xff0c;求装满这个容量为4的背包共有多少种排列方式 如果是组合问题&#xff0c;那么遍历顺序是先物品后背包&#xff0c;这样能保证物品按从小到大顺序依次放置&#xff0c;对于实例1求出来为4&…

【学生管理系统】element ui级联菜单bug

级联后端 通过父id来进行查询 GetMapping("/{parentId}")public BaseResult findAllByParentId(PathVariable("parentId") String parentId){//1 根据父id查询所有城市QueryWrapper<TbCity> queryWrapper new QueryWrapper<>();queryWrapper.…

第十七周:Fast R-CNN论文阅读

Fast R-CNN论文阅读 摘要Abstract文章简介1. 引言2. Fast R-CNN框架2.1 RoI位置信息映射2.2 RoI pooling2.3 分类器与边界框回归器2.4 以VGG16为backbone的Fast RCNN的网络结构 3. 训练细节3.1 采样3.2 多任务损失 4. 优缺点分析总结 摘要 这篇博客介绍了Fast R-CNN&#xff0…