信息学奥赛初赛天天练-19-挑战程序阅读-探索因数、所有因数平和、质数的奥秘

PDF文档公众号回复关键字:20240604
在这里插入图片描述

1 2023 CSP-J 阅读程序3

阅读程序(程序输入不超过数组成字符串定义的范围:判断题正确填√,错误填×;除特殊说明外,判断题1.5分,选择题3分,共计40分)

源程序

#include <iostream>
#include <cmath>
using namespace std;
 
int solve1(int n){
    return n*n;
}

int solve2(int n){
   int sum=0;
   for(int i=1;i<=sqrt(n);i++){
        if(n%i==0){
            if(n/i==i){
                sum+=i*i;
            }else{
                sum+=i*i+(n/i)*(n/i);
            }
        }
    }
    return sum;
}

int main(){
    int n;
    cin>>n;
    cout<<solve2(solve1(n))<<" "<<solve1((solve2(n)))<<endl;
    return 0;
}

假设输入的n是绝对值不超过1000的整数,完成下面的判断题和单选题。

判断题

27(2分)如果输入的n为正整数,solve2函数的作用是计算n所有的因子的平方和( )

28 (2分) 第13~14行的作用是避免n的平方根因子i(或n/i)进入第16行而被计算两次( )

29 (2分)如果输入的n为质数,solve2(n)的返回值为n^2+1( )

单选题

30 (4分)如果输入的n为质数p的平方,那么solve2(n)的返回值为( )

A p^2+p+1 B n^2+n+1 C n^2+1 D p^4+2p^2+1

31(3分)当输入为正整数时,第一项减去第二项的差值一定( )

A 大于0 B 大于等于0且不一定大于0 C 小于0 D 小于等于0且不一定小于0

32 (3分) 当输入为“5”时,输出为( )

A "651 625" B "650 729" C "651 676" D "652 625"

2 相关知识点

1) 因数

因数,也被称为约数,用于描述两个正整数之间的关系。如果一个整数a除以另一个非零整数b的商是整数,且没有余数,那么我们就说ba的因数。

例如

6的因数有:1、2、3、6

10的因数有:1、2、5、10

注意

任何正整数都有至少两个因数:1和它本身

0的因数在数论中通常不讨论,因为0除以任何非零数都是0,但这不是通常所说的“整除”

一个数的因数总是成对出现的(除了完全平方数,其平方根会出现两次,如4的因数是1,2,2,4)

2)质数

质数和合数是数学中对于自然数(不包括0和1)的两种重要分类

质数 (Prime Number)

一个大于1的自然数,除了1和它本身以外不再有其他因数的数称为质数

例如

2、3、5、7、11、13、17、19等都是质数

注意

质数只有两个正因数:1和它本身

合数

合数是指在大于1的整数中,除了能被1和本身整除外,还能被其他数(0除外)整除的数

4、6、8、9、10、12、14、15等都是合数

注意

合数至少有三个正因数,除1和本身以外还有至少一个正因数

3 思路分析

solve2代码逻辑

1 循环1~sqrt(n) ,对所有因数处理 (n%i==0)

2 n/i==i 时累加i 的平方(等同 n/i * i),这时只有一个因子,累加因子i的平方

3 n/i!=i 时累加i的平方和(n/i)的平方,此时累加2个因子的平方

4 综合上述1,2,3步骤,可以看出solve2函数的主要功能是累加一个数的所有因子的平方和

/*
  n=8时
  所以因子分别为 1  8  2  4
  sum=1*1 + 8 * 8 + 2 * 2 + 4 * 4=85
*/
int solve2(int n){
   int sum=0;
   for(int i=1;i<=sqrt(n);i++){
        if(n%i==0){
            if(n/i==i){
                sum+=i*i;
            }else{
                sum+=i*i+(n/i)*(n/i);
            }
        }
    }
    return sum;
}

假设输入的n是绝对值不超过1000的整数,完成下面的判断题和单选题。

判断题

27(2分)如果输入的n为正整数,solve2函数的作用是计算n所有的因子的平方和( )

答案 T

分析

根据对solve2函数的分析可以知,solve2函数的作用是计算n所有的因子的平方和

28 (2分) 第13~14行的作用是避免n的平方根因子i(或n/i)进入第16行而被计算两次( )

答案 T

分析

如果平方根因子是整数时,累加一次,如果去掉13-14行,程序执行逻辑会改变

//以n=4为例
//平方根2 改变前执行 sum+=2 * 2;
sum+=i*i; 
//平方根2 改变后执行 sum+=2 * 2 + (4/2)*(4/2) = 2 * 2 + 2 * 2
sum+=i*i+(n/i)*(n/i);
所以第16造成平方根因子被加2次

29 (2分)如果输入的n为质数,solve2(n)的返回值为n^2+1( )

答案 T

分析

由于质数只有2个因子,1和本身

所以所有因子平方和之和为1的平方+n的平方=n^2+1

单选题

30 (4分)如果输入的n为质数p的平方,那么solve2(n)的返回值为( )

A p^2+p+1 B n^2+n+1 C n^2+1 D p^4+2p^2+1

答案 B

分析

质数p的平方,有3个因子,1和p和p^2

所以所有因子平方和

1^2 + p^2 +( p^2 )^2

由于

n=p^2

整理上述2个式子得

1+n+n^2

所以选B

31(3分)当输入为正整数时,第一项减去第二项的差值一定( )

A 大于0 B 大于等于0且不一定大于0 C 小于0 D 小于等于0且不一定小于0

答案 D

分析

cout<<solve2(solve1(n))<<" "<<solve1((solve2(n)))<<endl;
//solve2(solve1(n)) 先计算solve1函数,再计算solve2函数,对n先平方再求n平方的因子平方和
//solve1(solve2(n)) 先计算solve2函数,再计算solve1函数,先计算n的因子平方和再平方
n=1时
solve1(1)=1
solve2(1)=1
所以solve2(solve1(1))=1
solve1(solve2(n))=1
第一项减去第二项的差值=0

n=4时
solve1(4)=16
solve2(16)=1^2+16^2+2^2+8^2+4^2=341
solve2(solve1(4))=341
    
solve2(4)=1^2 +4^2 + 2^2 = 21
solve1(21)=441   
solve1(solve2(4))=441
第一项减去第二项的差值341-441<0
    
n=5时
solve1(5)=25
solve2(25)=1^2+25^2+5^2=651
solve2(solve1(5))=625
    
solve2(5)=1^2 +5^2  = 26
solve1(26)=676
solve1(solve2(4))=676 
第一项减去第二项的差值625-676<0 
所以选D    

32 (3分) 当输入为“5”时,输出为( )

A "651 625" B "650 729" C "651 676" D "652 625"

答案 C

分析

n=5时
solve1(5)=25
solve2(25)=1^2+25^2+5^2=651
solve2(solve1(5))=625
    
solve2(5)=1^2 +5^2  = 26
solve1(26)=676
solve1(solve2(4))=676 
所以选C

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows上配置完整Linux开发环境(六):安装CentOS

1、CentOS vs. Ubuntu 基础和发行周期&#xff1a; CentOS 是基于Red Hat Enterprise Linux (RHEL)的社区版。它与RHEL共享源代码&#xff0c;因此提供与RHEL类似的稳定性。CentOS的版本更新不频繁&#xff0c;通常在RHEL发布新版本后才推出&#xff0c;保持长期支持周期&#…

《STM32Cube高效开发教程基础篇》第7章/案例7.1外部中断示例EXTI方式检测按键

文章目录 目的新建项目CudeMX设置CudeIDE编码 目的 采用外部中断方式检验4个按键的输入 新建项目 在案例6_1基础上另存为Demo7_1EXIT CudeMX设置 CudeIDE编码

MobileNetV4实战:使用MobileNetV4实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 论文链接&#xff1a;https://arxiv.org/pdf/2404.10518 MobileNetV4&#xff0c;作为新一代移动设备神经网络架构&#xff0c;凭借其创新的通用倒置瓶颈UIB块和Mobile MQA注意力块…

Java程序策——Java连接数据库保姆级教程(超详细步骤)

【Java程序策】——连接数据库 目录 ​编辑 一&#xff1a;在数据库中建立一个表&#xff08;student表&#xff09; 1.1&#xff1a;进入mysql 1.2&#xff1a;建立一个“数据库成员” 1.3&#xff1a;建立一个表&#xff08;student表&#xff09; 1.4&#xff1a;给表…

Springboot+vue二手房交易管理系统

Springbootvue二手房交易管理系统&#xff0c;项目用mybatis与数据库&#xff0c;数据库为mysql&#xff0c;16个表结构。有问题直接加我询问&#xff0c;我会一直在线哒。 功能如下&#xff1a; 房东管理 用户管理 房源信息管理&#xff08;可预约和查看评论&#xff09; 看房…

C语言 指针——函数指针的典型应用:通用排序

目录 编程实现升序和降序排序 如果不使用函数指针编程… 使用函数指针编写一个通用的排序函数 小结 编程实现升序和降序排序 如果不使用函数指针编程… 使用函数指针编写一个通用的排序函数 小结 正确理解指针的概念  指针是一种特殊的数据类型  指针类型的变量&am…

【动态规划】状态压缩dp

发现dp调试打最后二维dp表非常有用 1.吃奶酪类 先出状态&#xff0c;再走到哪 dp[1][0]0;for(int i3;i<maxn;i){//状态 for(int j1;j<n;j){//走过j if(i&(1<<j)){ for(int k0;k<n;k){//刚才在k dp[i][j]; } } } } P1433 吃奶酪 - 洛谷 | 计算机科学教育新生…

ARP欺骗的原理与详细步骤

ARP是什么&#xff1a; 我还记得在计算机网络课程当中&#xff0c;学过ARP协议&#xff0c;ARP是地址转换协议&#xff0c;是链路层的协议&#xff0c;是硬件与上层之间的接口&#xff0c;同时对上层提供服务。在局域网中主机与主机之间不能直接通过IP地址进行通信&#xff0c…

做ozon开单前需要多少钱,做ozon开单前需要多少钱

在电子商务的浪潮中&#xff0c;OZON平台以其独特的商业模式和市场定位&#xff0c;吸引了众多创业者和商家的目光。然而&#xff0c;在决定投身OZON平台之前&#xff0c;对开店成本的全面了解至关重要。本文将详细解析OZON开店前的各项费用&#xff0c;并提供一些高效投入的策…

go的反射和断言

在go中对于一个变量&#xff0c;主要包含两个信息变量类型&#xff08;type&#xff09;和变量值&#xff08;value&#xff09; 可以通过reflect包在运行的时候动态获取变量信息&#xff0c;并能够进行操作 对于Type可以通过reflect.TypeOf()获取到变量的类型信息 reflect.Ty…

网络服务DHCP的安装

DHCP的安装 检查并且安装dhcp有关软件包 rpm -qc dhcp #检查是否存在dhcp yum install -y dhcp #进行yum安装查看系统的配置文件 切换到对应目录查看相关文件配置&#xff0c;发现是空目录。 将官方提供的example复制到原配置文件中 cp /usr/share/doc/dhcp-4.2.5/dhcpd.…

This Python interpreter is in a conda environment

今天在查看python版本的时候出现警告 Warning: This Python interpreter is in a conda environment, but the environment has not been activated. Libraries may fail to load. To activate this environment please see https://conda.io/activation 这个警告意味着你…

Windows家庭版 WSL2非C盘详细安装配置与WSL代理设置+WSL基础环境CUDA安装

1 WSL2 配置 1.1 WSL 开启 注意&#xff1a;需要在windows功能中开启“Hyper-V”和“适用于Linux的Windows子系统”功能 但是&#xff01;windows家庭版&#xff08;windows home&#xff09;是默认没有Hyper-V功能的&#xff0c;自己手动安装&#xff1a; 创建一个记事本&a…

DeepDriving | 基于YOLOv8分割模型实现垃圾识别

本文来源公众号“DeepDriving”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;基于YOLOv8分割模型实现垃圾识别 0. 引言 YOLOv8是Ultralytics开源的一个非常火的AI算法&#xff0c;目前支持目标检测、实例分割、姿态估计等任务。…

Java List数据结构与常用方法

1.1 数据结构概述 Java的集合框架其实就是对数据结构的封装&#xff0c;在学习集合框架之前&#xff0c;有必要先了解下数据结构。 1.1.1 什么是数据结构 所谓数据结构&#xff0c;其实就是计算机存储、组织数据的方式。 数据结构是用来分析研究数据存储操作的&#xff0c;其实…

【Mac】Keyboard Maestro for Mac(键盘大师)软件介绍及安装教程

软件介绍 Keyboard Maestro for mac&#xff08;键盘大师&#xff09;是目前Mac OS平台上功能最为齐全的Mac键盘增强工具&#xff0c;它能将你的Keyboard作用发挥到极致&#xff0c;可以根据命令或计划自动执行简单或复杂的应用程序或网站&#xff0c;文本或图像。使用Keyboar…

力扣234. 回文链表

给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true # Definition for singly-linked list. # c…

Facebook开户 | Facebook海外三不限的价值

在当今数字化时代&#xff0c;海外数字营销已经成为企业推广和品牌建设的重要手段。在这个过程中&#xff0c;社交媒体平台扮演着至关重要的角色&#xff0c;而Facebook作为全球最大的社交媒体平台之一&#xff0c;其海外三不限账户近年来引起了越来越多数字营销从业者的关注。…

【数据结构与算法 | 二叉树篇】力扣101, 104, 111

1. 力扣101 : 对称二叉树 (1). 题 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false…

【Redis数据库】数据类型(2.3w字超详细)

文章目录 一、字符串类型概述1.1、数据类型1.2、字符串简介1.3、字符串应用场景 二、字符串命令三、哈希类型概述3.1、哈希介绍3.2、哈希类型应用场景3.3、哈希命令 四、列表类型概述4.1、列表简介4.2、使用场景4.3、列表命令 五、集合概述5.1、集合简介5.2、使用场景5.3、集合…