2021年度大题:灰太狼的密码

分析:本题主要使用的是素数进行输出,然后难点是如何按照题目要求格式输出。

思路:

第一:我们可以先让素数存给一个一维数组,至于存多少个素数,是矩阵n*n个,控制数量用计数器count即可,将所需要足够的素数存到一维数组后,就该考虑如何让这些元素按照题目格式。

第二:易知输出格式是二维的,因此要动用二维数组,创建一个新的二维数组,想办法将一维数组的元素存到二维数组中(按照题目格式)

第三:数组最重要的特点就是下标,因此我们要利用好下标,下面以4*4矩阵为例,画图分析

以从上到下,从左到右的顺序,top和left作为初始值0,bottom和right作为边界值3

按照逆时针顺序

第一步下标:行不变列增加,即(0,0)到(3,0);

第二步下标:列不变行增加,即(3,0)到(3,3);

第三步下标:行不变列减少,即(3,3)到(0,3);

第四步下标:列不变行减少,即(0,3)到(0,1);

于是最外围的解决完后发现内圈还是矩阵,于是再次循环……

第四:将一维数组中所有的素数都存给二维数组后,就打印该二维数组

答案:

#include <stdio.h>
#include <math.h>int is_prime(int n)  // 判断是否为素数
{if (n <= 1)   //2是最小的素数,所以比2小的都不是素数{return 0;  //为假}int sqr = sqrt(n);   for (int i = 2; i <= sqr; i++)    //优化算法{if (n % i == 0)   //有其他因子{return 0;   //为假}}return 1;   //否则是素数,为真
}int main() 
{int n = 0;scanf("%d", &n);int primes[1600] = { 0 }; // 存储素数序列的一维数组int count = 0; // 计数器计算已有素数个数int num = 2; // 从2开始判断素数while (count < n * n)  // 存n*n个的素数{if (is_prime(num)) {primes[count++] = num;}num++;}int arr[40][40]; // 存储密码矩阵的二维数组int left = 0, right = n - 1, top = 0, bottom = n - 1; // 四个边界int index = 0; // 素数序列下标 while (left <= right && top <= bottom)   //判断是否还有内圈{ for (int i = top; i <= bottom; i++)    //第一步{arr[i][left] = primes[index++];}for (int i = left + 1; i <= right; i++)   //第二步{arr[right][i] = primes[index++];}for (int i = bottom - 1; i >= top; i--)    //第三步{arr[i][right] = primes[index++];}for (int i = right - 1; i > left; i--)    //第四步{arr[top][i] = primes[index++];}left++;    //初始值加1right--;   //边界值减1top++;     //初始值加1bottom--;  //边界值减1}for (int i = 0; i < n; i++)    //输出密码矩阵{for (int j = 0; j < n; j++){printf("%5d ", arr[i][j]);}printf("\n");}return 0;
}

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

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

相关文章

汽车电子 -- CAN文件格式ASC

Vector提供了两种记录数据格式的格式规范&#xff1a;BLF和ASC。 先讲讲ASC。 参看&#xff1a;图文详解CAN Log文件 - ASC文件格式 一、ASC文件格式 在Vector提供的 CAN_LOG_TRIGGER_ASC_Format.pdf 提取码&#xff1a;ltjv 文件中&#xff0c;规定了CANoe/CANalyzer ASC记…

php中WebSocket简单使用

在PHP中使用WebSocket可以实现实时通信和推送功能。以下是一个简单的PHP WebSocket教程&#xff1a; 步骤1&#xff1a;建立服务器端 首先&#xff0c;你需要创建一个服务器端来处理WebSocket连接和消息的处理。使用PHP的库或框架来简化这个过程。PHP的Ratchet库是一个流行的…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之linux存储管理(3)》(19)

《Linux操作系统原理分析之linux存储管理&#xff08;3&#xff09;》&#xff08;19&#xff09; 6 Linux存储管理6.4 Linux 的分段和分页结构6.4.1Linux 的分段结构6.4.2 Linux 的三级分页结构6.4.3 内核页表和进程页表 6 Linux存储管理 6.4 Linux 的分段和分页结构 本节主…

微服务实战系列之Redis

前言 云淡天高&#xff0c;落木萧萧&#xff0c;一阵西北风掠过&#xff0c;似寒刀。冬天渐渐变得更名副其实了&#xff0c;“暖冬”的说法有点言过其实了。——碎碎念 微服务实战系列之Cache微服务实战系列之Nginx&#xff08;技巧篇&#xff09;微服务实战系列之Nginx微服务实…

28.BeanDefinition的加载过程

BeanDefinition的加载过程 BeanDefinition的加载过程就是将 概念态的Bean注册为定义态的Bean 不同的Spring上下文会有不同的注册过程,但是会用共同的api步骤: 通过BeanDefinitionReader 将配置类(AnnotatedBeanDefinitionReader)(xml文件:XmlBeanDefinitionReader) 注 册为…

多屏模式输入法可以正确切换屏幕展示原理剖析

背景 hi&#xff0c;粉丝朋友们&#xff1a; 近期有个学员问到了一个输入法相关问题。刚好梳理了一下输入法相关的在多屏模式的一个展示流程&#xff0c;这里做个记录&#xff0c;也相当于深入理解窗口相关的一篇干货blog。 如上面两幅图展示&#xff0c;输入法可以自由自在显…

(C++20) constinit常量初始化

文章目录 由来constinit 常量初始化常量初始化 ! 初始化常量初始化声明静态存储对象非初始化声明thread_local END 由来 在C多文件编译中会出现一个常见的问题&#xff0c;叫做静态初始化顺序问题。Static Initialization Order Fiasco。 比如现在有两个文件&#xff0c;其中…

[C++] new和delete

使用new时调用构造函数使用delete时调用析构函数 构造函数 使用new动态分配内存时&#xff0c;如果分配的是基本类型的内存&#xff0c;则不会调用构造函数。如果分配的是自定义类型的内存&#xff0c;则会调用构造函数进行对象的初始化。 例如&#xff1a; int* pInt new…

谁登榜? 2023数据安全平台神兽企业

在数字经济的浪潮中&#xff0c;数据安全已成为企业发展的关键支撑。2023年8月&#xff0c;CSA大中华区启动数据安全平台神兽企业调研&#xff0c;得到了众多网络安全综合厂商、数据安全专业厂商、云服务提供商、用户单位的广泛关注和积极参与。 历时4个月&#xff0c;CSA大中…

Java 线程池到底是如何复用线程的

原理概述 其实 Java 线程池的实现原理很简单&#xff0c;说白了就是一个线程集合 workerSet 和一个阻塞队列 workQueue。 当用户向线程池提交一个任务时&#xff0c;线程池会先将任务放入 workQueue 中。workerSet 中的线程会不断的从 workQueue 中获取线程然后执行。当 work…

macos安装metal 加速版 pytorch

categories: [Python] tags: Python MacOS 写在前面 试试 m3 的 metal 加速效果如何 Mac computers with Apple silicon or AMD GPUsmacOS 12.3 or laterPython 3.7 or laterXcode command-line tools: xcode-select --install 安装 Python: conda-forge brew install minif…

多人聊天Java

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{ public static ServerSocket server_socket; public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []ar…

GO设计模式——1、简单工厂模式(创建型)

目录 简单工厂模式&#xff08;Simple Factory Pattern&#xff09; 简单工厂模式的核心角色 优缺点 代码实现 简单工厂模式&#xff08;Simple Factory Pattern&#xff09; 简单工厂模式又称为静态工厂方法(Static Factory Method)模式。在简单工厂模式中&#xff0c;可以…

性能调优入门

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、性能定律和数理基础 1.三个定律法则 (1)帕累托法则 我它也被称为 80/20 法则、关键少数法则&#xff0c;或者八二法则。人们在生活中发现很多…

Ubuntur编译ROS报错:error PCL requires C++14 or above

ubuntu20.04 编译ROS包 报错&#xff1a; error&#xff1a; PCL requires C14 or above&#xff1a; 修改Cmakelists.txt文件&#xff1a; set&#xff08;CMAKE_CXX_STANDARD 14&#xff09; 再次编译成功.

用 Bytebase 做数据库 schema 迁移

数据库 schema 迁移指修改管理数据库结构的变更&#xff0c;包括为数据库添加视图或表、更改字段类型或定义新约束。Bytebase 提供了可视化 GUI 方便迁移数据库 schema&#xff0c;本教程将展示如何使用 Bytebase 为 schema 迁移配上 SQL 审核&#xff0c;自定义审批流&#xf…

Linux: sudo: unable to execute /opt/sbin/adm: No such file or directory

sudo: unable to execute /opt/sbin/adm: No such file or directory 这个错误有可能的原因是,sudo的设置里权限配置不对。 比如其他用户不应该有可执行权限,但是这个命令有,就不让执行。 但是这个错误提示有点让人迷惑,可能也是故意的。 另一个原因是:https://mzhan017…

HashMap和Hashtable的区别

一、简介 HashMap: 1、HashMap是非线程安全的&#xff0c;只是用于单线程环境下&#xff0c;多线程环境下可以采用concurrent并发包下的concurrentHashMap。 2、HashMap 实现了Serializable接口&#xff0c;因此它支持序列化&#xff0c;实现了Cloneable接口&#xff0c;能被…

改造python3中的http.server为简单的文件上传下载服务

改造 修改python3中的http.server.SimpleHTTPRequestHandler&#xff0c;实现简单的文件上传下载服务 simple_http_file_server.py&#xff1a; # !/usr/bin/env python3import datetime import email import html import http.server import io import mimetypes import os …

UDP协议实现群聊

服务端 package ydd;import java.io.*; import java.net.*; import java.util.ArrayList; public class A2{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []a…