因子化简——CSP认证题目

2024-03-10 21:52
文章标签 csp 认证 题目 因子 化简

本文主要是介绍因子化简——CSP认证题目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述

小 P 同学在学习了素数的概念后得知,任意的正整数 n都可以唯一地表示为若干素因子相乘的形式。如果正整数 n有m 个不同的素数因子 p 1 , p 2 , … , p m p_1, p_2, \ldots, p_m p1,p2,,pm,则可以表示为: n = p 1 t 1 ⋅ p 2 t 2 ⋅ p 3 t 3 ⋯ p m t m n = p_1^{t_1} \cdot p_2^{t_2} \cdot p_3^{t_3} \cdots p_m^{t_m} n=p1t1p2t2p3t3pmtm
小 P 认为,每个素因子对应的指数 t i t_{i} ti 反映了该素因子对于 n的重要程度。现设定一个阈值 k,如果某个素因子 pi对应的指数 t i t_{i} ti小于 k,则认为该素因子不重要,可以将 p i t i p_i^{t_i} piti 项从 n 中除去;反之则将 p i t i p_i^{t_i} piti 项保留。最终剩余项的乘积就是 n简化后的值,如果没有剩余项则认为简化后的值等于1。
试编写程序处理 q个查询:
每个查询包含两个正整数 n 和 k,要求计算按上述方法将 n 简化后的值。

输入格式

从标准输入读入数据。
输入共 q+1 行。
输入第一行包含一个正整数 q,表示查询的个数。
接下来 q 行每行包含两个正整数 n 和 k,表示一个查询。

输出格式

输出到标准输出。
输出共 q行。
每行输出一个正整数,表示对应查询的结果。
样例输入
3
2155895064 3
2 2
10000000000 10
样例输出
2238728
1
10000000000

def simplify_number(n, k):"""将正整数 n 按照阈值 k 简化后的值"""result = 1i = 2while i * i <= n:if n % i == 0:count = 0while n % i == 0:n //= icount += 1if count >= k:  # 只保留指数不小于 k 的素数因子result *= i ** counti += 1if n > 1 and k==1:  # 处理最后一个素数因子,因为最后一个素数因子指数肯定为1,所以只有k为1时才保留result *= nreturn result# 读取查询个数
q = int(input())# 存储查询数据
queries = []
for _ in range(q):n, k = map(int, input().split())queries.append((n, k))# 处理每个查询并输出结果
results = []
for query in queries:n, k = queryresult = simplify_number(n, k)results.append(result)# 输出结果
for result in results:print(result)

解题思路:
以上代码的核心思路如下:

  1. 定义一个函数 simplify_number(n, k),用于将正整数 n 按照阈值 k 进行简化。
  2. 在主循环中,从最小的素数 2 开始遍历,直到 i * i 大于 n。如果 n 能够整除当前的素数 i,则统计该素数在 n 中的指数 count。
  3. 如果 count 大于等于 k,则将当前素数及其指数乘入结果中。
  4. 处理完所有小于 sqrt(n) 的素数后,如果 n 大于 1 且 k 等于 1,则将剩余的 n 乘入结果中。
  5. 对每个查询,读取输入的 n 和 k,并调用 simplify_number(n, k) 函数,将结果存入列表中。
  6. 最后,输出所有结果。

这篇关于因子化简——CSP认证题目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

题目1254:N皇后问题

题目1254:N皇后问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: N皇后问题,即在N*N的方格棋盘内放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在同一斜线上。因为皇后可以直走,横走和斜走如下图)。 你的任务是,对于给定的N,求出有多少种合法的放置方法。输出N皇后问题所有不同的摆放情况个数。 输入

题目1380:lucky number

题目1380:lucky number 时间限制:3 秒 内存限制:3 兆 特殊判题:否 提交:2839 解决:300 题目描述: 每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

码蹄集部分题目(2024OJ赛9.4-9.8;线段树+树状数组)

1🐋🐋配对最小值(王者;树状数组) 时间限制:1秒 占用内存:64M 🐟题目思路 MT3065 配对最小值_哔哩哔哩_bilibili 🐟代码 #include<bits/stdc++.h> using namespace std;const int N=1e5+7;int a[N],b[N],c[N],n,q;struct QUERY{int l,r,id;}que

【Shiro】Shiro 的学习教程(二)之认证、授权源码分析

目录 1、背景2、相关类图3、解析3.1、加载、解析阶段3.2、认证阶段3.3、授权阶段 1、背景 继上节代码,通过 debug 进行 shiro 源码分析。 2、相关类图 debug 之前,先了解下一些类的结构图: ①:SecurityManager:安全管理器 DefaultSecurityManager: RememberMeManager:实现【记住我】功能