2024年9月电子学会等级考试五级第三题——整数分解
题目
3、整数分解
正整数 N 的 K-P 分解是指将 N 写成 K 个正整数的 P 次方的和。本题就请你对任意给定的正整数 N、K、P,写出 N 的 K-P 分解。
时间限制:8000
内存限制:262144
输入
输入在一行给出 3 个正整数 N (≤ 400)、K (≤ N)、P (1 < P ≤ 7),以空格分隔。
输出
如果存在解,则按下列格式输出: N = n[1]^P + … n[K]^P 其中 n[i] (i = 1, …, K) 是第 i 个分解因子。所有的分解因子要按非增顺序输出。 注意:解可能是不唯一的。例如 169 的 5-2 分解就存在 9 个解,如 12^2 + 4^2 + 2^2 + 2^2 + 1^2 或 11^2 + 6^2 + 2^2 + 2^2 + 2^2 等等。你必须输出分解因子和最大的那个解。如果还不唯一,则输出具有最大的分解因子序列的解 —— 我们称序列 { a1, a2, … , aK } 比序列 { b1, b2, … , bK } 大,如果存在 1 ≤ L ≤ K 使得 ai=bi 对于 i < L 成立,并且有 aL > bL。 如果解不存在,则输出 Impossible
。
样例输入
样例#1:
169 5 2
样例#2:
169 167 3
样例输出
样例#1:
169 = 6^2 + 6^2 + 6^2 + 6^2 + 5^2
样例#2:
Impossible
代码
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
struct node{int num,//因数 x;//底数bool operator<(const node &b)const{return num>b.num;}//重载<比较运算符,定义比较规则。这里是反序,大了才小(sort默认<升序,这里改成降序) //第一个const是常量引用,第二个是不修改该成员变量
};
int n,k,p,ans=0;
vector<node> ans_v,v;//最终因数和深搜时因数
void view(string s,const vector<node> &v){cout<<s<<endl;for(auto x=v.begin();x!=v.end();x++)if(x==v.begin())cout<<n<<":"<<x->x<<"^"<<p;else cout<<"+"<<x->x<<"^"<<p;cout<<endl;//Sleep(3000);
}
//bool go(剩因数和,剩几个数,上个因数){
void go(int he,int left,int num){if(he<0||left<0||he>0&&left==0||he==0&&left){//剪枝 cout<<endl;return;}cout<<"出发状态:"<<he<<"\t"<<left<<endl;if(he==0&&left==0){//到达目标状态,凑够了 view("again",v);int sum=0;sort(v.begin(),v.end());for(auto i=v.begin();i!=v.end();i++)sum+=i->x;//因数底数和 cout<<sum<<"\t"<<ans<<endl;if(sum<ans)return;//因数底数和小了 else if(sum==ans){//一样则用字典序高 bool k=1;for(vector<node>::iterator i=v.begin(),j=ans_v.begin();i!=v.end();i++,j++)if(i->x>j->x)break;else if(i->x<j->x){k=0;break;}if(k)ans_v=v;else return;}else{ans_v=v,ans=sum;view("ok",v);}}for(int x=he;x>0;x--){//遍历因数 int d=pow(x,1.0/p); //开方计算求底数 if(pow(d,p)!=x)continue;//不能开方 if(x>num)continue;//剪枝重复情况,10+5和5+10是同种情况,这里只要降序 if(x*left<he)break;//剪枝凑不够情况,剩的全是最大因数都不够凑目标数 cout<<"分出"<<x<<";";v2.push_back({x,d});go(he-x,left-1,x);//继续对剩余数拆解因数 v2.pop_back();//回溯 }
}
int main(){freopen("data.cpp","r",stdin);cin>>n>>k>>p;go(n,k,n);if(ans==0)cout<<"imposibel";else {for(auto i=ans_v.begin();i!=ans_v.end();i++){if(i==ans_v.begin())cout<<n<<"="<<i->x<<"^"<<p;else cout<<"+"<<i->x<<"^"<<p;}}return 0;
}
分析
- 是k个数的和,
- 而且每个数都是p次幂
- 各因子的和最大
- 和相同,选择字典序最大
- 指数运算(乘方运算) 2^4=16 底数2, 指数4, 幂是16
- 开放运算 pow(16,-1.0/4) 底数16,指数1.0/4 根是2
- 剪枝条件:如果当前因数乘以剩余个数少于剩余总和,则跳过该值。
结果
会有多组解,
留下因数底数和最大的
一样大的,留下字典序高的
小结
分层解决问题
先解决因数和的事情
再解决开方的问题
然后是因数和
后是字典序
该问题状态都,用BFS需要空间大
相关文章:
2024年9月电子学会等级考试五级第三题——整数分解
题目 3、整数分解 正整数 N 的 K-P 分解是指将 N 写成 K 个正整数的 P 次方的和。本题就请你对任意给定的正整数 N、K、P,写出 N 的 K-P 分解。 时间限制:8000 内存限制:262144 输入 输入在一行给出 3 个正整数 N (≤ 400)、K (≤ N)、P (1 …...
软考 系统架构设计师系列知识点之杂项集萃(60)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(59) 第97题 在面向对象设计中,()可以实现界面控制、外部接口和环境隔离。()作为完成用例业务的责任承担者,协调…...
使用Python开发经典俄罗斯方块游戏
使用Python开发经典俄罗斯方块游戏 在这篇教程中,我们将学习如何使用Python和Pygame库开发一个经典的俄罗斯方块游戏。这个项目将帮助你理解游戏开发的基本概念,包括图形界面、用户输入处理、碰撞检测等重要内容。 项目概述 我们将实现以下功能&…...
C++:字符数组与字符串指针变量的大小
#include<iostream> #include<cstring> int main(int argc, char const *argv[]) {// 字符数组char str[128] "hello world";std::cout<<sizeof(str)<<std::endl;std::cout<<strlen(str)<<std::endl;// 字符串指针变量char *st…...
stm32使用freertos时延时时间间隔不对,可能是晶振频率没设置
freertos 获取频率的接口 在 FreeRTOSConfig.h 文件中声明一个函数作为freertos的接口 /// /// brief 获取 SysTick 的频率 /// /// note arm cortex-m 系列 CPU 有一个 systick ,里面有一个 CTRL 寄存器,其中的 bit2 /// 可以用来控制 systick 的时钟…...
51c~C语言~合集5
我自己的原文哦~ https://blog.51cto.com/whaosoft/13913911 一、大厂C语言编程10大规范 1 代码总体原则 1、清晰第一 清晰性是易于维护、易于重构的程序必需具备的特征。代码首先是给人读的,好的代码应当可以像文章一样发声朗诵出来。 目前软件维护期成本…...
前端流行框架Vue3教程:17. _组件数据传递
_组件数据传递 我们之前讲解过了组件之间的数据传递,props 和自定义事件 两种方式 props:父传子 自定义事件:子传父 除了上述的方案,props也可以实现子传父 一、项目结构 src/ └── components/├── ComponentsA.vue # 父…...
Stack overflow
本文来源 :腾讯元宝 Stack Overflow - Where Developers Learn, Share, & Build Careers 开发者学习,分享 通过学习、工作和经验积累等方式,逐步建立和发展自己的职业生涯。 Find answers to your technical questions and help othe…...
SpringBoot 3.4.5版本导入Lomobok依赖后无法生效的问题
问题背景 最近,随着DeepSeek的爆火,小编也编写了一个前后端分离的“知库随考”系统,由于Spring AI官方提示想要使用Spring AI的话要求Spring Boot的版本在“3.4.x”以上,所以我在创建SpringBoot项目的时候选择了了Server URL:http…...
FPGA: UltraScale+ bitslip实现(ISERDESE3)
收获 一晃五年~ 五年前那个夏夜,我对着泛蓝的屏幕敲下《给十年后的自己》,在2020年的疫情迷雾中编织着对未来的想象。此刻回望,第四届集创赛的参赛编号仍清晰如昨,而那个在家熬夜焊电路板的"不眠者",现在…...
Electron详解:原理与不足
Electron是一个集成项目,它通过定制Chromium和Node.js,并将它们集成在内部来实现其功能。具体来说,Electron做了以下几个重要的工作: 定制Chromium:并将定制版本的Chromium集成在Electron内部。定制Node.js࿱…...
Spring Boot多数据源配置的陷阱与终极解决方案
引言 在微服务架构和复杂业务场景中,一个Spring Boot应用连接多个数据库的需求日益普遍。许多开发者尝试通过简单复制单数据源配置来实现多数据源,结果却遭遇了Bean冲突、事务失效、连接泄漏等隐蔽问题。本文将深入剖析Spring Boot自动配置的底层逻辑&a…...
android display 笔记(十四)VAU 和GSP 分别代表什么
VAU 和 GSP 的解释 GSP (Graphics/GPU Subsystem Processor) 含义: 图形处理子系统,通常指 SoC(系统级芯片)中负责 2D/3D 图形渲染、显示合成、图像后处理(如缩放、旋转、色彩管理) 的硬件模块。 在部分芯…...
tomcat 400 The valid characters are defined in RFC 7230 and RFC 3986
在遇到 Tomcat 因 URL 非法字符返回 400 Bad Request 时,选择在 Nginx 还是 Tomcat 中配置错误处理,需根据实际场景和需求权衡。以下是两种方案的详细对比及配置方法: 一、选择建议 方案适用场景优点缺点Nginx 配置- 需要统一处理所有后端服务(如多个 Tomcat 实例)的 400 …...
nginx负载均衡及keepalive高可用
实验前期准备: 5台虚拟机:4台当做服务器,1台当做客户机(当然,也可以使用主机的浏览器),4台服务器中,2台服务器当做后端真实访问服务器;另外2台服务器当做负载均衡服务器…...
漏洞修复:tomcat 升级版本 spring-boot-starter-tomcat 的依赖项
在Spring Boot项目中修复Tomcat漏洞(如CVE-2024-21733)时,通常需要升级内嵌Tomcat版本。以下是具体操作步骤和注意事项: 一、确认当前Tomcat版本 通过启动日志查看 启动项目时,控制台日志中会显示类似 Starting Servlet engine: [Apache Tomcat/9.0.43] 的信息,直接查看版…...
二、IGMP
目录 1. IGMPv1 1.1 IGMPv1 报⽂类型 1.2 IGMPv1 工作机制 1.3 成员加入 1.4 离组机制 2. IGMPv2 2.1 IGMPv2 报文 2.3 查询器选举 & 维护 2.4 成员加入 2.4 离组机制 3. IGMPv3 3.1 IGMPv3 vs. IGMPv2 3.2 IGMPv3 报文 3.3 IGMPv3 工作机制 4. IGMP Proxy …...
Redis--基础知识点--27--redis缓存分类树
在 Redis 中存储分类树,通常需要选择合适的数据结构来表现层级关系。以下是使用 字符串(String) 和 哈希(Hash) 两种常见方案的举例说明,结合电商分类场景(如 电子产品 > 手机 > 智能手机…...
【2025最新】VSCode Cline插件配置教程:免费使用Claude 3.7提升编程效率
2025年最新VSCode Cline插件安装配置教程,详解多种免费使用Claude 3.7的方法,集成DeepSeek-R1与5大实用功能,专业编程效率提升指南。 Cline是VSCode中功能最强大的AI编程助手插件之一,它能与Claude、OpenAI等多种大模型无缝集…...
SQL笔记一
SQL的分类 DDL(数据定义语言):CREATE(创建) ALTER(修改) DROP(删除结构) RENAME(重命名) TRUNCATE(清空) DML࿰…...
高可靠低纹波国产4644电源芯片在工业设备的应用
摘要 随着工业自动化和智能化的飞速发展,工业设备对于电源芯片的性能和可靠性提出了前所未有的严格要求。电源芯片作为工业设备的核心供电组件,其性能直接影响到整个设备的运行效率和稳定性。本文以国科安芯的ASP4644四通道降压稳压器为例,通…...
MyBatis 的分页插件 c
前言 大型项目的数据体量很大,在前端界面展示时为保障展示效果,会要求接口快速返回,这时候后端会选择分页获取数据,只传递要查询的页码数据。这就避免了大多问题,达到快速返回的效果。 常用的分页有2种: …...
网络安全-等级保护(等保) 2-5 GB/T 25070—2019《信息安全技术 网络安全等级保护安全设计技术要求》-2019-05-10发布【现行】
################################################################################ GB/T 22239-2019 《信息安全技术 网络安全等级保护基础要求》包含安全物理环境、安全通信网络、安全区域边界、安全计算环境、安全管理中心、安全管理制度、安全管理机构、安全管理人员、安…...
嵌软面试每日一阅----FreeRTOS
一. FreeRTOS 创建任务的方法及区别 在 FreeRTOS 中,任务创建主要有两种方式:动态内存分配(xTaskCreate())和静态内存分配(xTaskCreateStatic())。以下是两者的核心区别及使用场景: 1. 动态创建…...
EasyExcel详解
文章目录 一、easyExcel1.什么是easyExcel2.easyExcel示例demo3.easyExcel read的底层逻辑~~4.easyExcel write的底层逻辑~~ 二、FastExcel1.为什么更换为fastExcel2.fastExcel新功能 一、easyExcel 1.什么是easyExcel 内容摘自官方:Java解析、生成Excel比较有名的…...
023-C语言预处理详解
C语言预处理详解 文章目录 C语言预处理详解1. 预定义符号2. #define定义常量3. #define定义宏4. 带有副作用的宏参数5. 宏替换的规则6. 宏函数的对比7. #和##7.1 #运算符7.2 ##运算符 8. 命名约定9. #undef10. 命令行定义11. 条件编译12. 头文件包含12.1 头文件被包含方式12.1.…...
C#自定义控件-实现了一个支持平移、缩放、双击重置的图像显示控件
1. 控件概述 这是一个继承自 Control 的自定义控件,主要用于图像的显示和交互操作,具有以下核心功能: 图像显示与缩放(支持鼠标滚轮缩放)图像平移(支持鼠标拖拽)视图重置(双击重置…...
MarkitDown:AI时代的文档转换利器
在当今AI快速发展的时代,如何高效地将各种格式的文档转换为机器可读的格式,成为了一个迫切需要解决的问题。今天,我们来介绍一款由微软开发的强大工具——MarkitDown,它正是为解决这一问题而生的。 什么是MarkitDown? MarkitDown是一个用Python编写的轻量级工具,专门用…...
《数字分身进化论:React Native与Flutter如何打造沉浸式虚拟形象编辑》
React Native,依托JavaScript语言,借助其成熟的React生态系统,开发者能够快速上手,将前端开发的经验巧妙运用到移动应用开发中。它通过JavaScript桥接机制调用原生组件,实现与iOS和Android系统的深度交互,这…...
DeerFlow:字节新一代 DeepSearch 框架
项目地址:https://github.com/bytedance/deer-flow/ 【全新的 Multi-Agent 架构设计】独家设计的 Research Team 机制,支持多轮对话、多轮决策和多轮任务执行。与 LangChain 原版 Supervisor 相比,显著减少 Tokens 消耗和 API 调用次数&#…...
数字孪生工厂实战指南:基于Unreal Engine/Omniverse的虚实同步系统开发
引言:工业元宇宙的基石技术 在智能制造2025与工业元宇宙的交汇点,数字孪生技术正重塑传统制造业。本文将手把手指导您构建基于Unreal Engine 5.4与NVIDIA Omniverse的实时数字孪生工厂系统,集成Kafka实现毫秒级虚实同步,最终交付…...
牛客网NC22015:最大值和最小值
牛客网NC22015:最大值和最小值 题目描述 题目要求 输入:一行,包含三个整数 a, b, c (1≤a,b,c≤1000000) 输出:两行,第一行输出最大数,第二行输出最小数。 样例输入: …...
Uniapp中小程序调用腾讯地图(获取定位地址)
1、先配置权限: 这是上图的代码: "permission": { "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" } } 第二步:写代码: //下面是uniapp的模版代码 主…...
2025 后端自学UNIAPP【项目实战:旅游项目】5、个人中心页面:微信登录,同意授权,获取用户信息
一、框架以及准备工作 1、前端项目文件结构展示 2、后端项目文件结构展示 3、登录微信公众平台,注册一个个人的程序,获取大appid(前端后端都需要)和密钥(后端需要) 微信公众平台微信公众平台&…...
隆重推荐(Android 和 iOS)UI 自动化工具—Maestro
文章目录 前言一、为什么选择 Maestro?二、使用步骤1.安装(Windows)2.运行示例 三、Maestro Studio (重点)轻松编辑测试 四、价格总结 前言 当前移动 UI 自动化工具的实际效能与预期存在显著差距,团队推行…...
C#发送文件到蓝牙设备
测试环境: visual studio 2022 win11笔记本电脑,具有蓝牙功能 .net6控制台 测试步骤如下: 1 新增名为BluetoothDemo控制台项目 2 通过nuget安装InTheHand.Net.Bluetooth,版本选择4.2.1和安装InTheHand.Net.Obex,版…...
采用sherpa-onnx 实现 ios语音唤起的调研
背景 项目中需要实现一个语音唤起的功能,选择sherpa-onnx进行调研,要求各端都要验证没有问题。个人负责ios这部分的调研。查询官方发现没有直接针对ios语音唤起的稳定,主要技术平台也没有相关的可以借鉴。经过调研之后补充了一个。 一、下载…...
磁盘I/O瓶颈排查:面试通关“三部曲”心法
想象一下,你就是线上系统的“交通调度总指挥”,服务器的磁盘是所有数据进出的“核心枢纽港口”。当这个“港口”突然拥堵不堪,卡车(数据请求)排起长龙,进不去也出不来,整个系统的“物流”&#…...
磁盘性能测试与分析:结合fio和iostat的完整方案
磁盘性能测试与分析:结合fio和iostat的完整方案 磁盘性能是影响现代计算机系统整体运行效率的关键因素之一,特别是对于高I/O负载的应用如数据库、虚拟化环境等。本文将详细介绍如何利用fio和iostat工具全面评估磁盘性能,包括IOPS、带宽、延迟…...
随机森林(Random Forest)
随机森林(Random Forest)是一种基于决策树的集成学习算法,它通过构建多个决策树并将它们的预测结果进行综合,从而提高模型的准确性和稳定性。 1.基本原理 随机森林属于集成学习中的“Bagging”方法。其核心思想是通过构建多个决…...
C#数据类型
🧩 一、布尔值(bool) 表示逻辑值:true 或 false bool isTrue true; bool isFalse false;📌 二、整数(Integer Types) C# 支持多种有符号和无符号整数类型: 类型大小范围sbyte8…...
FastAPI 实现 Express 框架的 p-limit(1) 防并发操作
背景 以下是将 Electron 主进程中的 CURD 逻辑(Express 实现)迁移到 FastAPI 的完整方案,包含技术选型、实现步骤和注意事项,确保主进程与子进程解耦且稳定运行: 关键点 注意用 conda 安装 python 版本时,…...
STC8H系列单片机STC8H_H头文件功能注释
#ifndef __STC8H_H__ // 条件编译:如果未定义__STC8H_H__宏 #define __STC8H_H__ // 则定义该宏,防止头文件被重复包含 / //包含本头文件后,不用另外再包含"REG51.H" // 提示:本头文件已包含基本寄存器定义 sfr P0 = …...
C#中BackgroundWorker的概念与用法详解
一、BackgroundWorker 概念 BackgroundWorker 是 C# 中用于在后台线程中运行操作的组件,它允许你在不影响用户界面(UI)响应能力的情况下执行耗时操作。 它位于 System.ComponentModel 命名空间内,主要用于 Windows 窗体应用程序中…...
RM算法的地下宫殿
证: X n 1 X n β n ( ξ n − X n ) ( 1 − β n ) X n β n ξ n X_{n1}X_n\beta_n(\xi_n-X_n)(1-\beta_n)X_n\beta_n\xi_n Xn1Xnβn(ξn−Xn)(1−βn)Xnβnξn。由数学归纳法可得 X n 1 ∑ j 1 n ξ j β j ∏ i j n − 1 ( 1 − β…...
WEB安全--Java安全--LazyMap_CC1利用链
一、前言 该篇是基于WEB安全--Java安全--CC1利用链-CSDN博客的补充,上篇文章利用的是TransformedMap类,而CC链的原作者是利用的LazyMap类作为介质进行的触发。 所以本文将分析国外原作者在ysoserial commonscollections1中给出的CC1利用链。 二、回顾梳…...
【Matlab】最新版2025a发布,深色模式、Copilot编程助手上线!
文章目录 一、软件安装1.1 系统配置要求1.2 安装 二、新版功能探索2.1 界面图标和深色主题2.2 MATLAB Copilot AI助手2.3 绘图区升级2.4 simulink2.5 更多 延迟一个月,终于发布了🤭。 一、软件安装 1.1 系统配置要求 现在的电脑都没问题,老…...
[网络升级指南] 服务器网卡/带宽如何选?1GbE vs 10GbE vs 25GbE+ 性能与成本深度解析 (2025)
更多服务器知识,尽在hostol.com 嘿,各位服务器“舰长”们!当你为你的“星际飞船”(服务器)配备了顶级的 CPU“引擎”、超大的内存“能源核心”、以及光速 SSD“曲速引擎”之后,是不是觉得它就能在数字宇宙…...
Nginx与Tomcat负载均衡集群配置指南
目录 一、资源清单 二、基础环境 三、安装配置Tomcat 四、安装配置Nginx 一、资源清单 主机 操作系统 IP地址 tomcat1 OpenEuler24.03 192.168.16.142 tomcat2 OpenEuler24.03 192.168.16.143 Nginx OpenEuler24.03 192.168.16.144 二、基础环境 hostnamectl …...
已解决(亲测有效!):安装部署Docker Deskpot之后启动出现Docker Engine Stopped!
文章目录 已解决:安装部署Docker Deskpot之后启动出现Docker Engine Stopped!个人环境介绍自己的解决问题思路(详细过程附截图)1.打开控制面板2.点击程序和功能3.点击启动或关闭windows功能4.Hyper-V5.右键菜单栏的windows图标点击…...