当前位置: 首页 > news >正文

打卡信奥刷题(3351)用C++实现信奥题 P9560 [SDCPC 2023] Math Problem

P9560 [SDCPC 2023] Math Problem

题目描述

给定两个正整数n nnk kk,您可以进行以下两种操作任意次(包括零次):

  • 选择一个整数x xx满足0 ≤ x < k 0 \leq x < k0x<k,将n nn变为k ⋅ n + x k\cdot n+xkn+x。该操作每次花费a aa枚金币。每次选择的整数x xx可以不同。
  • n nn变为⌊ n k ⌋ \lfloor \frac{n}{k} \rfloorkn。该操作每次花费b bb枚金币。其中⌊ n k ⌋ \lfloor \frac{n}{k} \rfloorkn表示小于等于n k \frac{n}{k}kn的最大整数。

给定正整数m mm,求将n nn变为m mm的倍数最少需要花费几枚金币。请注意:0 00是任何正整数的倍数。

输入格式

有多组测试数据。第一行输入一个整数T TT1 ≤ T ≤ 10 5 1\leq T\leq 10^51T105)表示测试数据组数。对于每组测试数据:

第一行输入五个正整数n nnk kkm mma aab bb1 ≤ n ≤ 10 18 1\leq n\leq 10^{18}1n10181 ≤ k , m , a , b ≤ 10 9 1\leq k, m, a, b\leq 10^91k,m,a,b109)。

输出格式

每组数据输出一行一个整数,代表将n nn变为m mm的倍数最少需要花费几枚金币。如果无法完成该目标,输出− 1 -11

【样例解释】

对于第一组样例数据,一开始n = 101 n=101n=101,最优操作如下:

  • 首先进行一次第二种操作,将n nn变为⌊ n 4 ⌋ = 25 \lfloor \frac{n}{4} \rfloor=254n=25,花费5 55枚金币。
  • 接下来进行一次第一种操作,选择x = 3 x = 3x=3,将n nn变为4 ⋅ n + 3 = 103 4\cdot n+3=1034n+3=103,花费3 33枚金币。
  • 接下来进行一次第一种操作,选择x = 2 x = 2x=2,将n nn变为4 ⋅ n + 2 = 414 4\cdot n+2=4144n+2=414,花费3 33枚金币。
  • 此时414 = 2 × 207 414=2 \times 207414=2×207,满足n nnm mm的倍数。共花费5 + 3 + 3 = 11 5+3+3=115+3+3=11枚金币。

对于第二组样例数据,进行两次第二种操作将n nn变为0 00。共花费1 + 1 = 2 1 + 1 = 21+1=2枚金币。

对于第三组样例数据,因为n = 114 = 6 × 19 n = 114 = 6 \times 19n=114=6×19已经是m mm的倍数,因此无需进行任何操作。共花费0 00枚金币。

输入输出样例 #1

输入 #1

4 101 4 207 3 5 8 3 16 100 1 114 514 19 19 810 1 1 3 1 1

输出 #1

11 2 0 -1

C++实现

#include<bits/stdc++.h>usingnamespacestd;intt,k,m,a,b;longlongp[70],cnt,n;intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>t;while(t--){cin>>n>>k>>m>>a>>b;cnt=1,p[1]=n;while(k!=1&&n!=0)//p中记录所有操作二的可能结果{n/=k;p[++cnt]=n;}longlongans=1e18;for(inti=1;i<=cnt;i++){if(k==1)//k=1要特判{if(p[i]%m==0)ans=min(ans,1ll*(i-1)*b);continue;}intl=p[i],r=p[i];longlongsum=1ll*(i-1)*b;while(l/m==r/m&&l%m!=0&&r%m!=0){l*=k,r*=k;r+=k-1;sum+=a;}ans=min(ans,sum);}if(ans!=1e18)cout<<ans<<"\n";elsecout<<-1<<"\n";}return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.jsqmd.com/news/931192/

相关文章:

  • KNX智能照明避坑指南:用ETS5配置调光与场景时,90%新手会忽略的5个细节
  • 2024–2026视觉编码器十大变体技术梳理
  • YOLO11转CoreML完全指南:手把手教你如何将YOLO11转换为CoreML格式,并在iOS上测试。
  • 充电头暗藏玄机:宽幅变窄幅,低价背后是省钱还是埋雷?
  • 2026年5月目前靠谱的玉石厂商推荐,易加工石材/天然大理石/适配背景墙岩板/环保无异味岩板,玉石公司选哪家 - 品牌推荐师
  • 数字时代知识保存:从百科全书备份到长期存储技术实践
  • 3PEAK思瑞浦 TP5591-SR SOP8 精密运放
  • Java基础中级进阶篇二之IO流(IO流、嵌套类、多线程)
  • 反洗钱平台-互联网平台反洗钱系统全景设计
  • ncmdump:突破网易云音乐NCM加密的智能解密工具,5分钟解锁音乐自由
  • 长沙民办中职院校排行 5所合规办学机构实力解析 - 互联网科技品牌测评
  • 如何实现谷歌秒收录?让爬虫每天多抓500次的底层逻辑
  • 3步安装OmenSuperHub:终极免费的暗影精灵笔记本硬件管理工具
  • 南宋历代皇帝完整脉络全解析:偏安江南的百年抗争与崖山终章
  • 3步打造专业级无线网络安全测试:Fluxion钓鱼页面深度解析
  • MapStruct 与 Lombok 协作的注解处理器执行顺序分析
  • 公链革命2.0:Layer 1与Layer 2如何重构区块链开发者的黄金时代
  • m4s转MP4完整指南:3分钟解锁B站缓存视频的终极解决方案
  • MapLibre GL JS第36课:一个Source配置多个图层样式
  • 【收藏干货】2026 新版大模型转行全攻略:零基础小白、在职程序员转行避坑指南
  • FlipIt翻页时钟:Windows桌面上的时光艺术,告别Flash的复古新选择
  • 如何快速解密.NET混淆代码:de4dot终极完整指南
  • 用AI翻译你的WordPress —— WordPress AI Generator 2.4.0发布
  • PLC项目开发流程详解:从需求分析到现场调试
  • 嘉兴修漏水哪家好|2026嘉兴靠谱防水补漏、全屋漏水维修分区推荐 - 吉修匠
  • 基于仿生机械手的肌动传感器动作识别解析方案【附仿真】“
  • 谷歌秒收录需要什么条件?解决“发现未索引”报错的3步急救法
  • 微博舆情监控:定时爬取热点话题,通过NLP判断正负面情绪。微博舆情监控实战:基于定时爬取与NLP情感分析的Python实现
  • 3步解决抖音内容采集难题:你的自动化下载工作流指南
  • 空间计算在未来大有前景