信息学奥赛初赛天天练-38-CSP-J2021阅读程序-约数个数、约数和、埃氏筛法、欧拉筛法筛素数应用

news2024/10/7 18:32:14

PDF文档公众号回复关键字:20240628

在这里插入图片描述

2021 CSP-J 阅读程序3

1阅读程序(判断题1.5分 选择题3分 共计40分 )

01 #include<stdio.h>
02 using namespace std;
03
04 #define n 100000
05 #define N n+1
06 
07 int m;
08 int a[N],b[N],c[N],d[N];
09 int f[N],g[N];
10 
11 void init()
12 {
13	 f[1]=g[1]=1;
14	 for(int i=2;i<=n;i++){
15	 	if(!a[i]){
16			b[m++]=i;
17			c[i]=1,f[i]=2;
18			d[i]=1,g[i]=i+1;
19		}
20		for(int j=0;j<m&&b[j]*i<=n;j++){
21			int k=b[j];
22			a[i*k]=1;
23			if(i%k==0){
24				c[i*k]=c[i]+1;
25				f[i*k]=f[i]/c[i*k]*(c[i*k]+1);
26				d[i*k]=d[i];
27				g[i*k]=g[i]*k+d[i];
28				break;
29			}
30			else{
31				c[i*k]=1;
32				f[i*k]=2*f[i];	
33				d[i*k]=g[i];
34				g[i*k]=g[i]*(k+1);
35			}
36		}
37	 }
38 }
39
40 int main()
41 {
42	 init();
43	
44	 int x;
45	 scanf("%d",&x);
46	 printf("%d %d\n",f[x],g[x]);
47	 return 0;
48 }

假设输入的x是不超过1000的自然数,完成下面的判断题和单选题

判断题

28.若输入不为"1",把第13删去不会影响输出的结果( )

29.(2分) 第25行的"f[i]/c[i*k]"可能存在的无法整除而向下取取整的情况( )

30.(2分)在执行完init()后,f数组不是单调递增的,但g数组是单调递增的( )

单选题

31.init 函数的时间复杂度为( )

A. O(n)

B. O(nlogn)

C. O(n sqrt(n))

D. O(n^2)

32.在执行完init()后,f[1],f[2],f[3]… f[100]中有( )个等于2.

A. 23

B. 24

C. 25

D. 26

33.(4分)当输入为"1000"时,输出为( )

A. “15 1340”

B. “15 2340”

C. “16 2340”

D. “16 1340”

2 相关知识点

埃式筛法

如果一个数是素数,那么它的倍数一定不是素数。我们要找n以内的所有素数,那么把n以内的合数全部筛掉,剩下的就是素数了

时间复杂度

O(n * log (log n) )

欧拉筛法

将合数分解为一个最小质数乘以另一个数的形式,即 合数 = 最小质数 * 自然数,然后通过最小质数来判断当前数是否被标记过

时间复杂度

O(n)

3 思路分析

分析

本程序通过欧拉筛求约数个数及其约数和

使用到的对应数组

标记a数组,对合数进行标记,未标记的则是质数

质数表b数组,从小到大知道质数写到b数组

约数个数f数组,记录一个数对应的约数的个数

在填入约数个数f数组时,使用到最小质因数个数c数组

在填入约数和g数组时,使用到约数和对应的连乘积除第1项外的其他连乘积d数组

约数和g数组,记录一个数对应的约数之和

08 int a[N],b[N],c[N],d[N];
09 int f[N],g[N];

假设输入的x是不超过1000的自然数,完成下面的判断题和单选题

判断题

28.若输入不为"1",把第13删去不会影响输出的结果( T )

分析

13行程序计算并未使用,只对f[1],g[1]输出有影响,如果不输出f[1],g[1],不会影响输出

所以输入不为"1",删除不影响输出结果

29.(2分) 第25行的"f[i]/c[i*k]"可能存在的无法整除而向下取取整的情况( F )

分析

c[i]表示i的最小质因数个数
f[i]表示i的约数个数,计算公式如下

H = p1^a1 * p2^a2 ....pn^an 其中 pi都是质数,ai是幂次,p1是最小的质数
约数的个数f[i]=(a1+1)*(a2+1)*...(an+1)
其中a1是最小质因数个数
c[i]表示i的最小质因数个数=a1
满足条件i%k==0
c[i*k]=相当于最小质数+1=a1+1
a1+1是f[i]的因子,所以f[i]/c[i*k]不会存在无法整除的情况
所以错误

30.(2分)在执行完init()后,f数组不是单调递增的,但g数组是单调递增的( F )

分析

f数组是约数个数,合数个数多,质数个数少,3 4 5 对应约数个数分别是2 3 2 看,并不是单调递增的

g数组是约数和,3 4 5 对应约数和分别是4 7 6 看,并不是单调递增的

单选题

31.init 函数的时间复杂度为( A )

A. O(n)

B. O(nlogn)

C. O(n sqrt(n))

D. O(n^2)

分析

此算法是欧拉筛法求质数,欧拉筛是线性筛法,即所有的合数都被它最小的质因子筛一次,减少了埃氏筛法的重复筛的次数,时间复杂度近似O(n)

32.在执行完init()后,f[1],f[2],f[3]… f[100]中有( C )个等于2.

A. 23

B. 24

C. 25

D. 26

分析

f数组是约数个数,约数个数和为2,表示对应数组下标的数为质数

1~100之间的质数有25个,分别是

2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97

33.(4分)当输入为"1000"时,输出为( C )

A. “15 1340”

B. “15 2340”

C. “16 2340”

D. “16 1340”

分析

由程序逻辑知分别输出1000对应的约数个数及其对应的约数和
1000=2^3 * 5^3

第1项求约数个数,根据约数个数公式
(3+1)*(3+1)=16
第2项求约数和,根据约数和公式
(2^0+2^1+2^2+2^3) * (5^0+5^1+5^2+5^3)=2340
所以选C

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

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

相关文章

Linux操作系统学习:day07

内容来自&#xff1a;Linux介绍 视频推荐&#xff1a;[Linux基础入门教程-linux命令-vim-gcc/g -动态库/静态库 -makefile-gdb调试]( 目录 day0742、使用 grep 搜索文件内容43、使用 locate 搜索文件44、 vim 的安装和介绍vim的模式 45、命令模式下光标的移动1、保存退出2、代…

昇思MindSpore学习总结四——数据变换Transforms

1、数据变换 数据变换&#xff0c;字面意思&#xff0c;就是将我们在实际项目中获取的数据进行相应的操作&#xff0c;方便后期处理。数据变换的方法很多&#xff0c;例如归一化、标准化等。 为什么要进行数据变换&#xff1f;&#xff08;1&#xff09;我们采集到的数据&#…

Linux——echo命令,管道符,vi/vim 文本编辑器

1.echo 命令 作用 向终端设备上输出字符串或变量的存储数据 格式 echo " 字符串 " echo $ 变 量名 [rootserver ~] # echo $SHELL # 输出变量的值必须加 $ /bin/bash [rootserver ~] # str1" 我爱中国 " # 自定义变量 echo 重定向输出到文件 ec…

简单的本地局域网的前后端接口联调

由于项目被赶进度了&#xff0c;急于前后端联调接口&#xff0c;但是我又没钱买服务器&#xff08;主要我也不会部署&#xff09;&#xff0c;所以我这里就紧急找一个后端的大神朋友请教了一下&#xff1a;苏泽SuZe-CSDN博客 提示&#xff1a;这里不讲后端怎么写接口、前端怎么…

SBTI(科学碳目标)认证是什么?

SBTI认证&#xff0c;全称为“科学基础目标设置倡议”&#xff08;Science-Based Targets initiative&#xff09;认证&#xff0c;是一种广泛认可的企业可持续发展标准。以下是关于SBTI认证的详细解释&#xff1a; 一、认证目标 SBTI认证旨在推动企业采取可持续的经营实践&a…

云原生之使用Docker部署RabbitMQ消息中间件

云原生之使用Docker部署RabbitMQ消息中间件 一、RabbitMQ介绍1.1 RabbitMQ简介1.2 RabbitMQ特点1.3 RabbitMQ使用场景 二、检查Docker环境2.1 检查Docker版本2.2 检查操作系统版本2.3 检查Docker状态 三、下载RabbitMQ镜像四、部署RabbitMQ服务4.1创建挂载目录4.2 运行RabbitMQ…

利用代理IP实现高效大数据抓取的策略与技巧

在当今信息爆炸的时代&#xff0c;数据对于各行各业都至关重要。而数据的获取往往需要通过网络爬取。然而随着网络安全意识的提高和反爬虫机制的加强&#xff0c;传统的数据爬取方式可能会受到限制。在这种情况下&#xff0c;代理IP技术的应用就显得尤为重要。本文将探讨代理IP…

S32K3 --- Wdg(内狗) Mcal配置

前言 看门狗的作用是用来检测程序是否跑飞,进入死循环。我们需要不停地喂狗,来确保程序是正常运行的,一旦停止喂狗,意味着程序跑飞,超时后就会reset复位程序。 一、Wdg 1.1 WdgGeneral Wdg Disable Allowed : 启用此参数后,允许在运行的时候禁用看门狗 Wdg Enable User…

服务器日志事件ID4107:从自动更新 cab 中提取第三方的根目录列表失败,错误为: 已处理证书链,但是在不受信任提供程序信任的根证书中终止。

在查看Windows系统日志时&#xff0c;你是否有遇到过事件ID4107错误&#xff0c;来源CAPI2&#xff0c;详细信息在 http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab 从自动更新 cab 中提取第三方的根目录列表失败&#xff0c;…

使用自定义的shiro密码匹配器CredentialsMatcher完成密码验证

今天突然想研究一下shiro怎么匹配用户的密码。 我们使用shiro的API登录时&#xff0c;会先创建一个令牌对象&#xff0c;而经常用的令牌对象是UsernamePasswordToken&#xff0c;把用户输入的用户名和密码作为参数构建一个UsernamePasswordToken&#xff0c;然后通过Subject.l…

爆款短视频素材库有哪些?分享几个容易火的视频素材网站

当今自媒体时代&#xff0c;每位内容创作者都渴望制作出下一个爆款短视频。你是否在寻找那些能让你的视频迅速蹭热度的顶级素材库&#xff1f;本文将为你介绍几个视频素材库&#xff0c;它们或许能成为你成功的秘密武器。首先要提的&#xff0c;自然是著名的国内素材库——蛙学…

财务RPA与数字化转型——财务RPA如何促进企业的数字化转型

在数字化时代&#xff0c;企业面临着推动创新、提高效率的巨大挑战。RPA财务机器人作为智慧财务不可或缺的新动能&#xff0c;不仅能够优化财务流程&#xff0c;还能够在整个企业中引领数字化变革。本文金智维将深入探讨财务RPA如何成为企业数字化转型的战略利器&#xff0c;为…

docker 搭建 AI大数据模型 --- 使用GPU

docker 搭建 AI大数据模型 — 使用GPU方式 搭建本地大模型&#xff0c;最简单的方法&#xff01;效果直逼GPT 服务器GPU系统HP580 G8P40Rocky9.2 安装程序AnythingLLM前端界面Open WebUIChatOllamaollama 一、AnythingLLM 介绍 AnythingLLM 是 Mintplex Labs Inc. 开发的一…

自然语言处理-BERT处理框架-transformer

目录 1.介绍 2.Transformer 2.1 引言 2.2 传统RNN网络的问题 2.3 整体架构 2.4 Attention 2.5 Self-Attention如何计算 3.multi-headed机制 4. BERT训练方法 1.介绍 BERT&#xff1a;当前主流的解决框架&#xff0c;一站式搞定NLP任务。&#xff08;解决一个NLP任务时的考虑…

STM32 IWDG(独立看门狗)

1 IWDG简介 STM32有两个看门狗&#xff1a;一个是独立看门狗&#xff08;IWDG&#xff09;&#xff0c;另外一个是窗口看门狗。独立看门狗也称宠物狗&#xff0c;窗口看门狗也称警犬。本文主要分析独立看门狗的功能和它的应用。 独立看门狗用通俗一点的话来解释就是一个12位的…

访问外网的安全保障——反向沙箱

反向沙箱作为一种网络安全技术&#xff0c;其核心理念在于通过构建一个隔离且受控的环境&#xff0c;来有效阻止潜在的网络威胁对真实系统的影响。在当今日益复杂的网络环境中&#xff0c;如何借助反向沙箱实现安全上网&#xff0c;已成为众多用户关注的焦点。 随着信息化的发…

解决ubuntu18.04 安装vscode 报依赖库错误,以及打不开终端的问题。

其实很简单&#xff0c;ubuntu18.04太老了&#xff0c;官网最新版本的vscode对ubuntu18.04会有些依赖库的问题。 一顿查资料后发现2023.11月的1.85版本正常使用&#xff0c;于是完美解决。 下载链接 Visual Studio Code November 2023 点击这里下载。 下载完成&#xff0c;…

STM32 I2C总线锁死原因及解决方法

本文介绍STM32 I2C总线锁死原因及解决方法。 在使用STM32 I2C总线操作外设时&#xff0c;有时会遇到I2C总线锁死&#xff08;I2C总线为Busy状态&#xff09;的问题&#xff0c;即便复位MCU也无法解决&#xff0c;本文介绍其锁死的原因和解决方法&#xff0c;并给出相应的参考代…

【Redis四】主从复制、哨兵以及Cluster集群

目录 一.主从复制、哨兵、集群的区别 二.Redis主从复制 1.作用 2.原理 3.流程 三.搭建Redis 主从复制 1.源码编译安装以及配置文件修改 1.1.修改 Redis 配置文件&#xff08;Slave节点操作&#xff09; 2.验证主从复制 2.1.在Master节点上看日志 2.2.在Master节点上…

学习记录696@网络安全之认证、报文完整性、密钥分发与证书

认证 即通信双方如何认证对方身份。 这种情况存在问题&#xff1a;trudy可以伪造A的IP地址。就算带上密码也可能被截获&#xff0c;用于重放攻击。 解决重放攻击的办法是随机数挑战&#xff0c;每次认证时&#xff0c;B都发一个挑战码给A。A加密后再传给B&#xff0c;如果B…