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

题集 (5) - AT ARC084B Small Multiple

题目传送门。

题意:给定一个整数 \(k\),求一个 \(k\) 的正整数倍 \(s\),使得 \(s\) 的数位和最小。

首先有一个基本结论:任意正整数都可以从 \(1\) 开始,经过若干次 \(+1\)\(\times 10\) 得到。

而进一步观察,可以发现前一种操作会使数位和增加 \(1\),后一种操作不影响数位和。那么一个正整数的数位和,实际上就是它从 \(1\) 变化而来的所有方式中,最小的 \(+1\) 次数再加 \(1\)(因为起点是 \(1\))。显然我们要尽可能多地 \(\times 10\),才能找到这一次数。

举例来说,\(91\) 可以是从 \(1\) 开始,连加 \(90\)\(1\) 而得到的;也可以是先做 \(8\)\(+1\) 操作,再乘以 \(10\),最后 \(+1\) 而得到的。可以发现,后一种方式只需要 \(9\)\(+1\),且不存在 \(+1\) 次数更少的方式。因此可以发现,\(91\) 的数位和是 \(10\)

接下来把这一性质运用到本题中。由“最小的 \(+1\) 次数”,联想到以某种方式建出一张图,然后求最短路。

我们要凑的是 \(k\) 的倍数,因此我们将所有正整数在模 \(k\) 意义下分类,同余的分为一类,即通常所说的“同余类”。这样我们就得到了 \(k\) 个同余类,其中每个同余类的编号定义为这里面的数模 \(k\) 的余数。

接下来,将每个同余类视作图中的一个结点,记为 \(u\)。对于 \(\forall u \in [0,k-1]\cap\mathbb{Z}\),我们建出有向边 \(u\rightarrow (u+1)\bmod k\)\(u\rightarrow (10u)\bmod k\)。由之前的结论,前者的边权为 \(1\),后者的边权为 \(0\)

显然 \(k\) 的倍数位于 \(0\) 号同余类中,因此要找到数位和最小的 \(k\) 的倍数,我们只需要在这张图上跑出 \(1\)\(0\) 的最短路。最短路的长度就是数位和。

代码(题中的 \(k\) 在代码里改成了 \(n\),注意鉴别):

#include<iostream>
#include<queue>
using namespace std;const int N=1e5+5;int n;namespace graph{#define rep for(int i=head[u];~i;i=e[i].nxt)#define handle int v=e[i].v,w=e[i].w;int idx=-1;int head[N];struct edge{int v,nxt,w;}e[N<<3];inline void add(int u,int v,int w){return e[++idx]={v,head[u],w},head[u]=idx,void();}int dis[N];bool vis[N];inline void SPFA(int s){for(int i=0;i<N;++i)dis[i]=1e9;queue<int>q;q.push(s),dis[s]=1;while(!q.empty()){int u=q.front();q.pop(),vis[u]=0;rep{handle;if(dis[v]>dis[u]+w){dis[v]=dis[u]+w;if(!vis[v])vis[v]=1,q.push(v);}}}return ;}#undef rep#undef handle}using namespace graph;signed main(){for(int i=0;i<N;++i)head[i]=-1;ios::sync_with_stdio(false);cin.tie(0);cin>>n;for(int i=0;i<n;++i)add(i,(i*10)%n,0),add(i,(i+1)%n,1);return SPFA(1),cout<<dis[0]<<"\n",0;
}

提交记录。

http://www.gsyq.cn/news/51017.html

相关文章:

  • 2025年石棉橡胶板厂家联系电话推荐:品质认证售后无忧
  • 2025年评价高的高端衣物护理机厂家推荐及选购指南
  • 【解决 Codex 修改文件后中文乱码疑问:根源在终端编码,不在 VS Code】
  • TensorFlow2 Python深度学习 - 循环神经网络(LSTM)示例 - 教程
  • android: onClick与onTouch冲突,onclick事件没有触发
  • 2025年靠谱的抗UV的PET片厂家最新权威实力榜
  • 2025年口碑好的川字塑料托盘热门厂家推荐榜单
  • 2025年河南伸缩门制造商哪家靠谱?权威推荐榜单揭晓
  • 2025年知名的swl丝杆升降机厂家最新TOP实力排行
  • 2025年比较好的子母不锈钢合页厂家最新实力排行
  • HTML6
  • 2025年热门的高阻隔贴体膜厂家最新TOP排行榜
  • 深入解析:从 “坑“ 到 “通“:Spring AOP 通知执行顺序深度解密
  • 2025年热门的极简定制家具拉手厂家最新热销排行
  • 2025年知名的胶印油墨厂家最新用户好评榜
  • 2025年比较好的无极绳气动煤矿道岔高评价厂家推荐榜
  • 002 vue3-admin项目的目录及文件说明之tsconfig.app.json
  • WinForm 使用互斥锁防止应用重复打开
  • 2025年评价高的免费设计装饰方案品牌口碑榜
  • 数据结构——二十六、邻接表(王道408) - 详解
  • Python Mixin强大的技术详解:灵活扩展类机制的艺术
  • 2025年热门的化妆品级云母粉厂家最新推荐排行榜
  • 2025年口碑好的旋耕机中箱款厂家推荐及选购参考榜
  • Cherry键盘手册
  • 九、HTML id - CSS篇章
  • 完整教程:基于遗传优化的CDVRP问题最优值求解matlab仿真
  • 2025年11月遗产继承律师评测榜:五家机构数据对比与选择
  • 2025年11月上海装修公司TOP10推荐:专业能力与服务质量深度对比
  • 八、HTML CSS
  • 读社会工程:安全体系中的人性漏洞(第2版)03构建你的艺术