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

洛谷P9560 [SDCPC 2023] Math Problem 题解

[SDCPC 2023] Math Problem

这题题解竟然没有满!

思路

有没有发现两个操作貌似相反?我们发现,如果先进行第一个操作再进行第二个操作,相当于没有进行操作。故最优的操作顺序一定是先进行若干次操作二,再进行若干次操作一。

那么我们可以枚举两次操作的次数。第二次操作最多进行 log⁡kn\log_{k}{n}logkn 次。如果初始为 nnn,进行一次操作一,其可能的取值范围为 [n⋅k,n⋅k+k−1][n\cdot k,n\cdot k+k-1][nk,nk+k1],进行两次操作一,其可能的取值范围为 [n⋅k⋅k,(n⋅k+k−1)⋅k+k−1][n\cdot k\cdot k,(n\cdot k+k-1)\cdot k+k-1][nkk,(nk+k1)k+k1]。如果当前取值范围为 [l,r][l,r][l,r],那么执行一次操作一后可能范围即为 [l⋅k,r⋅k+k−1][l\cdot k,r\cdot k+k-1][lk,rk+k1],这个范围内的数都能取到。根据鸽巢原理,如果取值范围大于等于 mmm,那么一定会有至少一个 mmm 的倍数,所以操作一最多执行 log⁡km\log_{k}{m}logkm 次,总复杂度 O(Tlog⁡knlog⁡km)O(T\log_{k}{n}\log_{k}{m})O(Tlogknlogkm)

代码

有可能爆 long long,要开 __int128!

#include<bits/stdc++.h>
using namespace std;
int t,k,m,a,b;
long long p[70],cnt,n;
int main()
{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;}long long ans=1e18;for(int i=1;i<=cnt;i++){if(k==1)//k=1要特判{if(p[i]%m==0)ans=min(ans,1ll*(i-1)*b);continue ;}__int128 l=p[i],r=p[i];long long sum=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";}return 0;
}
http://www.dtcms.com/a/443650.html

相关文章:

  • 单链表的实现
  • 免费自媒体网站山东东营网络seo
  • 网站建设的一般步骤广西钦州有做网站的公司吗
  • phpcms 网站源码wordpress模板死循环
  • php网站开发人员wordpress 去掉google
  • 如何建设网站论文文献上传网站图片不显示
  • 电竞网站建设方案扬州手机网站开发
  • html网页制作介绍自己家乡天津seo实战培训
  • 大兴建站推广2022创业好项目
  • 最好的免费网站空间wordpress内容搬家
  • 网站建设APP的软件珠海网签查询
  • 外贸网站能用阿里云吗郑州做网站怎么样
  • 网站版面布局网站建设软件sh
  • 那种登录才能查看的网站怎么做优化google图片搜索引擎入口
  • 成绩的提升是突飞猛进而不是缓慢的
  • 建站之星视频上海创意网站建设
  • 网站备案意味着什么关键词优化快排
  • 做类似58同城大型网站尤溪县建设局网站
  • asp.net 网站的编译昆明二建建设集团网站
  • 网站开发涉及技术wordpress 站长
  • 环保类网站模板免费下载湖南省建设工程招标网
  • 国外网站后台模板下载如何在网站上做咨询浮动窗口
  • 响应式网站制作公司wordpress 置顶 不显示
  • 佛山网站推广怎么做一站式网站建设报价
  • Perl 错误处理
  • 岑溪网站开发怎样建个人网站 步骤
  • Amber24 安装指南:Ubuntu 22.04 + CUDA 12.4 环境
  • 做淘宝链接的网站网吧网络组建方案
  • 冀icp 网站建设电商网站的制作流程
  • 银川做网站多少钱郑州高端网站建设多少钱