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

2024-04-21 08:36

本文主要是介绍CCF-CSP真题《202312-2 因子化简》思路+python,c++满分题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

想查看其他题的真题及题解的同学可以前往查看: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的幂次+1while num % i == 0:   tmp += 1num //= iif tmp > 0:ans.append((i, tmp))i += 1# 大于sqrt(n)的素因子最多只有1个if num > 1:   ans.append((num, 1))return ansif __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';}
}

运行结果:

这篇关于CCF-CSP真题《202312-2 因子化简》思路+python,c++满分题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/922625

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.