题集 (5) - AT ARC084B Small Multiple

news/2025/11/16 10:38:29/文章来源:https://www.cnblogs.com/D3906-ourstar/p/19227246

题目传送门。

题意:给定一个整数 \(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.mzph.cn/news/966889.shtml

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

相关文章

2025年知名的粉末冶金厂家最新实力排行

2025年知名的粉末冶金厂家最新实力排行行业背景与市场趋势粉末冶金作为现代制造业的重要组成部分,近年来在全球范围内保持了稳定增长态势。根据《2024-2025全球粉末冶金行业白皮书》数据显示,2024年全球粉末冶金市场…

2025年评价高的新能源充电桩TOP品牌厂家排行榜

2025年评价高的新能源充电桩TOP品牌厂家排行榜新能源充电桩行业背景与市场趋势随着全球能源结构转型和"双碳"目标的持续推进,新能源汽车产业迎来了爆发式增长。据中国电动汽车百人会最新数据显示,2024年中…

2025年石棉橡胶板厂家联系电话推荐:品质认证售后无忧

在工业密封领域,石棉橡胶板因其耐高温、耐油、耐酸碱及良好的压缩回弹性能,长期被电力、石化、冶金、造船、国防等关键行业视为管道法兰、压力容器、泵阀等部位不可替代的静密封材料。2025年,随着“双碳”战略深入推…

2025年评价高的高端衣物护理机厂家推荐及选购指南

2025年评价高的高端衣物护理机厂家推荐及选购指南行业背景与市场趋势随着生活品质的提升和健康意识的增强,高端衣物护理机市场近年来呈现爆发式增长。根据中国家用电器研究院最新发布的《2024-2025中国智能家居市场白…

2025年石棉橡胶板厂家联系电话推荐:军工级密封方案快速响应

在工业设备密封领域,石棉橡胶板因其出色的耐高温、耐油、耐酸碱及密封性能,一直被电力、石化、冶金、造船、国防等行业视为关键基础材料。2025年,随着高温高压工况的增多,企业对石棉橡胶板的质量稳定性、供货速度及…

2025年石棉橡胶板厂家联系电话推荐:一站式采购服务热线

在工业密封领域,石棉橡胶板因其优异的耐高温、耐腐蚀和密封性能,被广泛应用于电力、石化、冶金、造船、国防等关键行业。随着设备工况日益严苛,企业对石棉橡胶板的品质、供货速度及售后支持提出了更高要求。2025年,…

2025年隔音室厂家联系方式推荐:听力中心整体方案热线

在快节奏的城市生活中,无论是医院听力检测、科研单位声学实验,还是连锁体检中心的高端验配区,都对“安静”提出了近乎苛刻的要求。一间指标过硬、交付周期短、后期维护省心的隔音室,往往决定了检测数据是否精准、用…

Python和C语言中的函数的对比

对比维度 C 语言函数 Python 函数声明与定义 可分离(声明写头文件,定义写.c文件),必须先声明(或定义)再使用 声明与定义合一(def语句即完成定义+声明),无需单独声明类型绑定 必须指定返回值类型、参数类型,类…

2025年比较好的工业废气处理TOP品牌厂家排行榜

2025年工业废气处理TOP品牌厂家排行榜:技术与服务并重的领军企业行业背景与市场趋势随着全球环保法规日益严格和"双碳"目标的持续推进,工业废气处理行业迎来了前所未有的发展机遇。据中国环境保护产业协会…

2025年靠谱的硅胶热水袋厂家实力及用户口碑排行榜

2025年靠谱的硅胶热水袋厂家实力及用户口碑排行榜行业背景与市场趋势随着冬季取暖需求的持续增长和消费者对安全、环保产品的日益重视,硅胶热水袋市场近年来呈现稳定增长态势。据中国家居用品协会2024年发布的《电热取…

【解决 Codex 修改文件后中文乱码疑问:根源在终端编码,不在 VS Code】

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年靠谱的常压pp储罐厂家推荐及选购参考榜

2025年靠谱的常压PP储罐厂家推荐及选购参考榜行业背景与市场趋势聚丙烯(PP)储罐作为化工、制药、食品等行业的重要设备,近年来市场需求持续增长。根据中国塑料加工工业协会最新数据,2024年我国PP储罐市场规模已达28.…

2025年隔音室厂家联系方式推荐:真实信息快速对接

在听力检测、科研实验、职业健康筛查等场景里,一间指标过硬、交付快速的隔音室往往决定数据精度与工作效率。2025年,随着新国标GB/T 25516-2025《纯音测听隔音室通用技术条件》的正式实施,医疗机构、助听器连锁、第…

TensorFlow2 Python深度学习 - 循环神经网络(LSTM)示例 - 教程

TensorFlow2 Python深度学习 - 循环神经网络(LSTM)示例 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "C…

android: onClick与onTouch冲突,onclick事件没有触发

android: onClick与onTouch冲突,onclick事件没有触发Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Log.i…

2025年口碑好的直联便携式空压机行业内口碑厂家排行榜

2025年口碑好的直联便携式空压机行业内口碑厂家排行榜行业背景与市场趋势直联便携式空压机作为工业制造、建筑施工、汽车维修等领域不可或缺的动力设备,近年来随着全球制造业的复苏和基础设施建设的加速,市场需求持续…

2025年靠谱的抗UV的PET片厂家最新权威实力榜

2025年靠谱的抗UV的PET片厂家最新权威实力榜行业背景与市场趋势随着全球环保意识的不断提升和塑料制品应用领域的持续扩展,抗UV PET片材市场近年来呈现出稳健增长态势。根据最新发布的《2024-2029全球抗UV塑料片材市场…

2025年比较好的烤漆轻钢龙骨实力厂家TOP推荐榜

2025年比较好的烤漆轻钢龙骨实力厂家TOP推荐榜行业背景与市场趋势随着我国建筑装饰行业的持续发展,轻钢龙骨作为吊顶和隔墙系统的重要支撑材料,市场需求呈现稳定增长态势。据中国建筑材料联合会最新数据显示,2024年…

2025年质量好的柴油发电机组用户好评厂家排行

2025年质量好的柴油发电机组用户好评厂家排行行业背景与市场趋势随着全球能源结构的转型和电力需求的持续增长,柴油发电机组作为重要的备用电源和移动电源解决方案,在工业、商业、医疗、数据中心等领域发挥着不可替代…

002 vue3-admin项目的目录及文件说明之tsconfig.node.json文件

说明 tsconfig.node.json 是现代前端项目中常见的 TypeScript 配置文件,专门用于 Node.js 环境的代码配置。{"compilerOptions": {"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.…