CCF-CSP真题《202312-2 因子化简》思路+python,c++满分题解

news2024/12/25 12:36:05

想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全

试题编号:202312-2
试题名称:因子化简
时间限制:2.0s
内存限制:512.0MB
问题描述:

题目背景

质数(又称“素数”)是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。

问题描述

小 P 同学在学习了素数的概念后得知,任意的正整数 n 都可以唯一地表示为若干素因子相乘的形式。如果正整数 n 有 m 个不同的素数因子 p1,p2,⋯,pm,则可以表示为:n=p1t1×p2t2×⋯×pmtm。

小 P 认为,每个素因子对应的指数 ti 反映了该素因子对于 n 的重要程度。现设定一个阈值 k,如果某个素因子 pi 对应的指数 ti 小于 k,则认为该素因子不重要,可以将 piti 项从 n 中除去;反之则将 piti 项保留。最终剩余项的乘积就是 n 简化后的值,如果没有剩余项则认为简化后的值等于 1。

试编写程序处理 q 个查询:

  • 每个查询包含两个正整数 n 和 k,要求计算按上述方法将 n 简化后的值。

输入格式

从标准输入读入数据。

输入共 q+1 行。

输入第一行包含一个正整数 q,表示查询的个数。

接下来 q 行每行包含两个正整数 n 和 k,表示一个查询。

输出格式

输出到标准输出。

输出共 q 行。

每行输出一个正整数,表示对应查询的结果。

样例输入

3
2155895064 3
2 2
10000000000 10

样例输出

2238728
1
10000000000

样例解释

查询一:

  • n=23×32×234×107

  • 其中素因子 3 指数为 2,107 指数为 1。将这两项从 n 中除去后,剩余项的乘积为 23×234=2238728。

查询二:

  • 所有项均被除去,输出 1。

查询三:

  • 所有项均保留,将 n 原样输出。

子任务

40% 的测试数据满足:n≤1000;

80% 的测试数据满足:n≤105;

全部的测试数据满足:1<n≤1010 且 1<k,q≤10。

真题来源:因子化简

 感兴趣的同学可以如此编码进去进行练习提交

python题解: 

 # 将整数num用因子形式表示 (因子,幂)
def decompose(num):  
    ans = []
    i = 2
    # 检查2-sqrt(n)
    while i * i <= num:   
        tmp = 0
        # 素数筛选算法, 筛掉i的倍数,每筛一次,i的幂次+1
        while num % i == 0:   
            tmp += 1
            num //= i
        if tmp > 0:
            ans.append((i, tmp))
        i += 1
    # 大于sqrt(n)的素因子最多只有1个
    if num > 1:   
        ans.append((num, 1))
    return ans


if __name__ == "__main__":
    q = int(input())
    for i in range(q):
        # 乘积结果
        mlc = 1     
        # n:整数 k:阈值
        n, k = map(int, input().split())    
        # 求n以内的所有素数因子,并用因子形式表示
        num_primes = decompose(n)    
        for item in num_primes:
            if item[1] >= k:
                mlc *= item[0]**item[1]
        print(mlc)

 运行结果:


C++题解:

#include <bits/stdc++.h>
using  namespace std;
inline int read()
{
        int x = 0, f = 1;
        char c = getchar();
        while (c < '0' || c > '9')
        {
                if (c == '-') f = -1;
                c = getchar();
        }
        while ( c >= '0' && c <= '9')
        {
                x = x * 10 + c - '0';
                c = getchar();
        }
        return x * f;
}
inline long long LLread()
{
        long long x = 0, f = 1;
        char c = getchar();
        while (c < '0' || c > '9')
        {
                if (c == '-') f = -1;
                c = getchar();
        }
        while ( c >= '0' && c <= '9')
        {
                x = x * 10 + c - '0';
                c = getchar();
        }
        return x * f;
}

long long PrimeList[10000]{2, 3};
int PrimeListSize = 2;

void FillPrimeList(long long n = 1e10)
{
        long long C = sqrt(n) + 1;
        for (long long i = 5; i<= C;++i)
        {
                bool Flag = 1;
                for (int j = 0; j< PrimeListSize; ++j)
                {
                        if (i % PrimeList[j] ==0)
                        {
                                Flag = 0;
                                break;
                        }
                }
                if (Flag)
                {
                        PrimeList[PrimeListSize++] = i;
                }
        }
}
long long Nums[15]{0};
int Ks[15]{0};
int main()
{
        int q = read();
        long long MaxNum = 0;
        for (int i = 1; i<=q; ++i)
        {
                Nums[i] = LLread();
                Ks[i] = read();
                MaxNum = MaxNum > Nums[i] ? MaxNum : Nums[i];
        }
        FillPrimeList(MaxNum);
        for (int i = 1; i <= q; ++i)
        {
                int CurIndex = 0, CurCnt = 0;
                long long CurAns = 1;
                bool Flag = 1;
                while (CurIndex < PrimeListSize)
                {
                        if (Nums[i] % PrimeList[CurIndex] == 0)
                        {
                                ++CurCnt;
                                Nums[i] /= PrimeList[CurIndex];
                        }
                        else
                        {
                                if (CurCnt >= Ks[i]) CurAns *= pow(PrimeList[CurIndex], CurCnt);
                                ++CurIndex;
                                CurCnt = 0;
                        }
                }
                cout << CurAns << '\n';
        }
}

运行结果:

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

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

相关文章

安装AngusTester节点代理

一、介绍 节点代理程序(AngusAgent)提供三方面作用&#xff1a; 通过启动"执行器(AngusRunner)"来执行脚本任务。在代理节点上运行和管理Mock服务。收集、监控和报告关于节点的各种指标和性能数据&#xff0c;该数据用于在稳定性测试中可分析节点资源使用率。 二、…

Java高阶私房菜:高并发之线程池底层原理学习

以往我们需要获取外部资源&#xff08;数据源、Http请求等&#xff09;时&#xff0c;需要对目标源创建链接对象&#xff0c;三次握手成功后方可正常使用&#xff0c;为避免持续的资源占用和可能的内存泄漏&#xff0c;还需要调用目标对象close方法释放资源销毁对象。这一建一销…

【PCL】教程conditional_euclidean_clustering 对输入的点云数据进行条件欧式聚类分析...

[done, 3349.09 ms : 19553780 points] Available dimensions: x y z intensity 源点云 Statues_4.pcd 不同条件函数output.pcd 【按5切换到强度通道可视化】 终端输出&#xff1a; Loading... >> Done: 1200.46 ms, 19553780 points Downsampling... >> Done: 411…

ssm064农产品仓库管理系统系统+jsp

农产品仓库管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本农产品仓库管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者…

Llama 3“智商”测试:英文提示表现亮眼,中文不完美但差强人意!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

C++从入门到精通——C++动态内存管理

C动态内存管理 前言一、C/C内存分布分类1分类2题目选择题sizeof 和 strlen 区别示例sizeofstrlen 二、C语言中动态内存管理方式malloc/calloc/realloc/free示例例题malloc/calloc/realloc的区别malloc的实现原理 三、C内存管理方式new/delete操作内置类型new和delete操作自定义…

zabbix自定义监控、自动发现和注册以及代理设置

前言 监控项的定制和新设备的注册往往需要大量手动操作&#xff0c;这会导致维护成本的增加和监控效率的降低。本文将介绍如何利用 Zabbix 的自定义功能&#xff0c;实现监控项的动态发布和新设备的自动注册以及代理设置、从而简化运维工作并实现更高效的监控管理。 Zabbix 监…

LearnOpenGL(二)之三角形

一、重要概念 顶点数组对象&#xff1a;Vertex Array Object&#xff0c;VAO顶点缓冲对象&#xff1a;Vertex Buffer Object&#xff0c;VBO元素缓冲对象&#xff1a;Element Buffer Object&#xff0c;EBO 或 索引缓冲对象 Index Buffer Object&#xff0c;IBO 以数组的形式…

【简单介绍下R-Tree】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

单链表的实现(单链表的增删查改)

在顺序表中实现数据的增删的操作时&#xff0c;都要把操作位置之后的数据全部移动一遍&#xff0c;操作效率低下。其次是容量固定&#xff08;静态顺序表&#xff09;&#xff0c;虽然在动态顺序表中容量可变&#xff0c;但也会造成空间上的浪费。 单链表就完美解决了上述缺点…

.net8系列-02图文并茂手把手教你编写增删改查接口

前情提要 接上篇文章&#xff0c;我们的应用已经创建完毕了&#xff0c;接下来我们编写几个自己的接口 快速开始 新增Controller 复制一份WeatherForecastController.cs,改名为CommonInfoController 设置Class名 将CommonInfoController中的复制过来的class名改成新名 …

对称二叉树 - LeetCode 热题 39

大家好&#xff01;我是曾续缘&#x1f90e; 今天是《LeetCode 热题 100》系列 发车第 39 天 二叉树第 4 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#…

vue3图片展示实战

首先得有一个vue3项目 教程&#xff1a; vue3项目搭建 我测试存在两种方式可以将本地图片进行展示到页面 public文件夹下可以直接导入src下的asset文件夹下得图片需要在 script 标签内声明再导入网页图片不可导入&#xff0c;应该是存在一种限制 1&#xff0c;创建文件demo1I…

ICLR 2024 | FTS-Diffusion: 用于合成具有不规则和尺度不变模式的金融时间序列的生成框架

ICLR 2024 | FTS-Diffusion: 用于合成具有不规则和尺度不变模式的金融时间序列的生成框架 原创 QuantML QuantML 2024-04-17 09:53 上海 Content 本文提出了一个名为FTS-Diffusion的新颖生成框架&#xff0c;用于模拟金融时间序列中的不规则和尺度不变模式。这些模式由于其独…

桌面软件使用到的开源库

想了解一下桌面软件开发中可能使用到的dll库 联想锁屏 libcef-常用概念-框架特点-CSDN博客 libcurl库使用详情、libcurl库的制作-CSDN博客 使用Cef和Qt做一个跨平台的多标签多窗口浏览器_cef3 多个标签-CSDN博客 cef 依赖的文件 libcef - Bigben - 博客园 (cnblogs.com) Q…

Cadence virtuoso 原理图创建边框

给原理图创建如下图的边框Creating a Sheet Border and Title edit-sheet size添加画布 选择画布尺寸&#xff0c;border size里面的A/B/C/D对应不同的画布尺寸。 添加好画布后&#xff0c;在edit-sheet tilte里面可以选择输入相关信息&#xff0c;如电路名称&#xff0c;日期&…

STM32 F103C8T6经验笔记15:国产芯片下载受限问题

今日使用DAP仿真器下载时的小问题&#xff1a; Not a genuine sT Device! Abort connection 错误&#xff1a;不是真正的ST设备&#xff01;中止连接。 问题解释&#xff1a; 这是因为下载时软件给你检测出这不是他们的正版芯片了&#xff0c;然后我查看了一下之前的购买记…

项目管理-项目范围管理

目录 一、概述 二、范围计划的编制 2.1 项目中包含的范围 2.1.1 产品范围 2.1.2 工作范围 2.1.3 总结 2.2 范围计划编制的成果 2.2.1 范围管理计划 2.2.1.1 概述 2.2.1.2 内容 三、创建工作分解结构 3.1 概述 3.2 WBS目的和用途 3.3 WBS分层结构 3.3.1 分层结构图…

python爬虫-----深入了解 requests 库下篇(第二十五天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

[卷积神经网络]YoloV8

一、YoloV8 1.网络详解 ①backbone部分&#xff1a;第一次卷积的卷积核缩小(由3变为6)&#xff1b;CSP模块的预处理卷积从3次变为2次&#xff1b;借鉴了YoloV7的多分支堆叠结构&#xff08;Multi_Concat_Block&#xff09;。 所小第一次卷积的卷积核尺寸会损失部分感受野&#…