【CSP】202312-2 因子简化

2023年 第32次CCF计算机软件能力认证  202312-2 因子化简

原题链接:CSP32-因子简化

时间限制: 2.0 秒

空间限制: 512 MiB

目录

题目背景

题目描述

输入格式

输出格式

样例输入

样例输出

样例解释

子任务

解题思路

AC代码


题目背景

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

题目描述

小 P 同学在学习了素数的概念后得知,任意的正整数 𝑛 都可以唯一地表示为若干素因子相乘的形式。如果正整数 𝑛 有 𝑚 个不同的素数因子 𝑝1,𝑝2,⋯,𝑝𝑚,则可以表示为:𝑛=𝑝1𝑡1×𝑝2𝑡2×⋯×𝑝𝑚𝑡𝑚​​。

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

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

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

输入格式

从标准输入读入数据。

输入共 𝑞+1 行。

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

接下来 𝑞行每行包含两个正整数 𝑛 和 𝑘,表示一个查询。

输出格式

输出到标准输出。

输出共 𝑞 行。

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

样例输入

3
2155895064 3
2 2
10000000000 10

样例输出

2238728
1
10000000000

样例解释

查询一:

  • 𝑛=2^3×3^2×23^4×107

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

查询二:所有项均被除去,输出 1

查询三:所有项均保留,将 𝑛 原样输出。

子任务

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

80% 的测试数据满足:𝑛≤10^5;

全部的测试数据满足:1<𝑛≤10^10 且 1<𝑘,𝑞≤10。

解题思路

1.n的范围较大,保险起见开long long。

2.枚举所有因子,范围最大只枚举到sqrt(n).

3.结合试除法枚举因子。这样求出来的因子一定是质数因子 因为如果因素i不是素数,那么一定可以被表示成i之前的素数之和:例如6=2*3,8=2^3,非质数因子一定是=某质数因子 x 某数。

4.符合条件的因子留下。

AC代码

#include<bits/stdc++.h>using namespace std;typedef long long LL;int q;
LL n, k, ans;int main()
{cin>>q;while(q--){cin>>n>>k;ans = 1;int t =sqrt(n); //先求平方根//再枚举找因子for(LL i = 2; i <= t; i ++)  //1这个因子没啥价值 直接从2开始看{if(n % i == 0) {LL res = 0; //因子指数while(n % i == 0)  //结合试除法(保证求出来的因子都是质数)求当前的因子的指数大小{//这样求出来的因子一定是质数因子 因为如果i不是素数,那么一定可以被表示成i之前的素数之和//例如6=2*3,8=2^3非质数因子一定是=某质数因子 x 某数的 n /= i;res ++;}//指数大于或等于阈值则留下if(res >= k) ans *= pow(i, res);}}cout<<ans<<endl;}return 0;
}

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

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

相关文章

STM32 MDK Keil5软件调试功能使用(无需连接硬件)

MDK Keil5 在线仿真STM32&#xff08;无需连接硬件&#xff09; 首先点击工具栏的魔术棒配置一下&#xff1a;&#xff08;记得选择自己的STM32芯片类型&#xff09; 开启调试 使用逻辑分析仪查看IO输出 会打开这个界面&#xff0c;点击左边的setup按钮 会打开这个窗口&am…

182.二叉树:二叉搜索树的最小绝对差(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

手把手教你入门vue+springboot开发(三)--登录功能后端

文章目录 前言一、redis安装二、后端代码1.修改application.yml文件2.增加utils文件3.增加Result类4.修改UserController类5.修改UserMapper类6.修改UserService和UserServiceImpl类7.增加LoginInterceptor类8.增加WebConfig类9.修改pom.xml文件 前言 前两篇我们用vuespringbo…

去除数组重复成员的方法

方法 1 扩展运算符和 Set 结构相结合&#xff0c;就可以去除数组的重复成员 // 去除数组的重复成员 [...new Set([1, 2, 2, 3, 4, 5, 5])]; // [1, 2, 3, 4, 5] 方法 2 function dedupe(array) {return Array.from(new Set(array)); } dedupe([1, 1, 2, 3]); // [1, 2, 3] …

FPGA中复位电路的设计

复位电路也是数字逻辑设计中常用的电路&#xff0c;不管是 FPGA 还是 ASIC 设计&#xff0c;都会涉及到复位&#xff0c;一般 FPGA或者 ASIC 的复位需要我们自己设计复位方案。复位指的是将寄存器恢复到默认值。一般复位功能包括同步复位和异步复位。复位一般由硬件开关触发引起…

基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[2]-简洁部署版

基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[2]-简洁部署版 1.环境要求 1.1 软件要求 要顺利运行本代码,请按照以下系统要求进行配置 已经测试过的系统 Linux Ubuntu 22.04.5 kernel version 6.7其他系统可能出现系统兼容性问题。 最低要求 该要求仅针对标准模…

oracle中执行select ... for update需要什么权限?

oracle中执行select … for update需要什么权限&#xff1f; 问题 在oracle中&#xff0c;一个用户执行select … for update需要什么权限&#xff1f; 分析测试 用户1&#xff1a; test_0614 用户2&#xff1a;test 目标表&#xff1a;test.t_0614 执行语句&#xff1a;se…

MySQL用户密码插件mysql_native_password和caching_sha2_password的区别

MySQL用户密码插件mysql_native_password和caching_sha2_password有几个关键的区别&#xff0c;主要集中在安全性、性能和兼容性方面&#xff1a; 1. 算法和安全性 mysql_native_password: 使用的是基于SHA-1的密码散列算法。SHA-1算法已被认为不再足够安全&#xff0c;存在一…

【深度学习基础】理解 PyTorch 中的 logits 和交叉熵损失函数

在深度学习中&#xff0c;理解损失函数是训练模型的关键一步。在分类任务中&#xff0c;交叉熵损失函数是最常用的损失函数之一。本文将详细解释 PyTorch 中的 logits、交叉熵损失函数的工作原理&#xff0c;并展示如何调整张量的形状以确保计算正确的损失。 什么是 logits&am…

论人工智能与真实性

论人工智能与真实性 这让我们都感到不安:不是因为人工智能已经足够好&#xff0c;可以准确地预测某人可能会如何回答(包括猫的名字、表情符号的使用、汤的参考以及对“精神动物”的随意参考)&#xff0c;而是因为提供这些反应菜单的模式首先代表了对这些互动功能的误解。即使回…

59.指向指针的指针(二级指针)

目录 一.什么是指向指针的指针 二.扩展 三.视频教程 一.什么是指向指针的指针 我们先看回顾一下指针&#xff1a; #include <stdio.h>int main(void) {int a 100;int *p &a;printf("*p is %d\n",*p);return 0;} 解析&#xff1a; 所以printf输出的结…

TCP/IP协议,三次握手,四次挥手

IP - 网际协议 IP 负责计算机之间的通信。 IP 负责在因特网上发送和接收数据包。 HTTP - 超文本传输协议 HTTP 负责 web 服务器与 web 浏览器之间的通信。 HTTP 用于从 web 客户端&#xff08;浏览器&#xff09;向 web 服务器发送请求&#xff0c;并从 web 服务器向 web …

Java 网站开发入门指南:如何用java写一个网站

Java 网站开发入门指南&#xff1a;如何用java写一个网站 Java 作为一门强大的编程语言&#xff0c;在网站开发领域也占据着重要地位。虽然现在 Python、JavaScript 等语言在网站开发中越来越流行&#xff0c;但 Java 凭借其稳定性、可扩展性和丰富的生态系统&#xff0c;仍然…

【CS.AL】算法必学之贪心算法:从入门到进阶 —— 关键概念和代码示例

文章目录 1. 概述2. 适用场景3. 设计步骤4. 优缺点5. 典型应用6. 题目和代码示例6.1 简单题目&#xff1a;找零问题6.2 中等题目&#xff1a;区间调度问题6.3 困难题目&#xff1a;分数背包问题 7. 题目和思路表格8. 总结References 1000.1.CS.AL.1.4-核心-GreedyAlgorithm-Cre…

李永乐线代笔记

线性方程组 解方程组的变换就是矩阵初等行变换 三秩相等 方程组系数矩阵的行秩列秩&#xff0c;线性相关的问题应求列秩&#xff0c;但求行秩方便 齐次线性方程组 对应向量组的线性相关&#xff0c;所以回顾下线性相关的知识&#xff1a; 其中k是x&#xff0c;所以用向…

Leaflet集成wheelnav在WebGIS中的应用

目录 前言 一、两种错误的实现方式 1、组件不展示 2、意外中的空白 二、不同样式的集成 1、在leaflet中集成wheelnav 2、给marker绑定默认组件 2、面对象绑定组件 3、如何自定义样式 三、总结 前言 在之前的博客中&#xff0c;我们曾经介绍了使用wheelnav.js构建酷炫…

http穿透怎么做?

众所周知http协议的默认端口是80&#xff0c;由于国家工信部要求&#xff0c;域名必须备案才给开放80端口&#xff0c;而备案需要固定公网IP&#xff0c;这就使得开放http80端口的费用成本和时间成本变的很高。那么能不能利用内网穿透技术做http穿透呢&#xff1f;下面我就给大…

【C语言】14. qsort 的底层与模拟实现

一、回调函数 回调函数就是⼀个通过函数指针调用的函数。 把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被用来调用其所指向的函数时&#xff0c;被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用&#xff0c;而是…

深入探索 Python 面向对象编程:封装、继承、多态和设计原则

在 Python 中&#xff0c;面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称 OOP&#xff09;是一种重要的编程范式&#xff0c;它将数据和操作封装在对象中&#xff0c;使得代码更加模块化、可复用和易于维护。 基本语法 Python 中的面向对象编程主要涉…

二分【3】 旋转数组

目录 旋转数组 旋转数组找最小值 旋转数组找指定值 严格递增序列 递增序列 旋转序列找中位数&#xff1a; 旋转数组 旋转数组找最小值 思路 #include <iostream> #include <vector> #include <cmath> #include <string> #include <cstrin…