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记…

<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微服务实…

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

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

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

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

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

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

多人聊天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…

性能调优入门

从公众号转载&#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…

改造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…

【C++】如何优雅地把二维数组初始化为0

2023年12月7日&#xff0c;周四上午 目录 为什么要初始化二维数组不优雅的初始化方式&#xff1a;使用两个for循环优雅的初始化方式一&#xff1a;使用初始化列表优雅的初始化方式二&#xff1a;使用memset函数 为什么要初始化二维数组 如果不初始化二维数组&#xff0c;那么…

点评项目——短信登陆模块

2023.12.6 短信登陆如果基于session来实现&#xff0c;会存在session共享问题&#xff1a;多台Tomcat不能共享session存储空间&#xff0c;这会导致当请求切换到不同服务器时出现数据丢失的问题。 早期的解决办法是让session提供一个数据拷贝的功能&#xff0c;即让各个Tomcat的…

【Python】流畅!一个非常好用的网络数据采集工具!

文章目录 前言一、注册二、初窥三 数据集四 自定义网站网络爬虫总结 前言 你是否曾为获取重要数据而感到困扰&#xff1f;是否因为数据封锁而无法获取所需信息&#xff1f;是否因为数据格式混乱而头疼&#xff1f;现在&#xff0c;所有这些问题都可以迎刃而解。让我为大家介绍…

【数据结构】——二叉树简答题模板

目录 一、树和二叉树的概念&#xff08;一&#xff09;二叉树的定义和性质&#xff08;二&#xff09;树和二叉树的区别 二、完全二叉树和满二叉树三、二叉树的遍历&#xff08;一&#xff09;由序列确定二叉树&#xff08;二&#xff09;不同遍历序列的关系 四、二叉树的性质&…

智能井盖传感器产品介绍,井盖传感器推荐

智能井盖传感器是一种先进的设备&#xff0c;能够提高城市管理的智能化水平。该传感器作为城市生命线建设的核心组成部分&#xff0c;为智慧城市的正常建设提供了有力的保障&#xff0c;能够提高城市管理的智能化水平。这种设备通过高度灵敏的传感器网络&#xff0c;实时监测井…

智能优化算法应用:基于野马算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于野马算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于野马算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.野马算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

通过Powershell远程控制windows服务器

1、被测服务器5985、5986端口开启&#xff0c;在网络设置中&#xff0c;点击“更改连接属性”。 2、网络配置文件中选择“专用”。 3、以管理员权限运行Powershell&#xff0c; 4.通过powershell命令在本地电脑上添加远端信任主机 winrm set winrm/config/client {TrustedHos…

关于DWC OTG2.0中PFC的理解

在DWC OTG2.0 Controller手册中&#xff0c;有一章节专门介绍了PFC&#xff0c;Packet FIFO Controller。其内部分为共享FIFO&#xff08;shared FIFO&#xff09;以及专用FIFO&#xff08;Dedicated FIFO&#xff09;&#xff0c;并针对dev和host两种模式&#xff0c;并且还要…