CF1714E Add Modulo 10
这个E题有点怪。
Description
你有一种操作,名曰 x+=x%10
,现在给你 个数 到 ,让你求能否对每个数字进行若干次上述操作使 个数相同。
Analysis
由于操作与个位数有关,故对个位数进行分析。
若个位数为 ,可经一次操作得到 ;
若个位数为 ,可经一次操作得到 ;
若个位数为 ,可经一次操作得到 ;
若个位数为 ,可经一次操作得到 ;
若个位数为非零偶数,则可经若干次操作相互转化(循环),具体表示为:
而对于个位数 和 ,则有转化链:
规律应该都懂了,下面看怎么判断多个数能否转为同一个数。
-
第一种情况:
则末位为 的数最多进行一次操作,末位为 的进行操作无效。故只需两次特判,一次原序列判断是否全相等,一次判断对末位为 的数操作一次能否是全序列相等,若有一次满足相等,则输出Yes
,否则为No
。 -
第二种情况:
不妨先对序列不降排序,把除最大数外数的各位都转化为 结尾的数,目的是将各数转化到 的循环上。
然后对 即最大数进行操作,达成一次末位数循环,比如:。对于每个操作后的 ,都对 ~ 扫描一次判断能否经过操作达到当前的 。
由于一次 循环加 ,故判断是只需将 的值先模 ,再判断余数是否为 或 ,若能分解则 可经过有限次操作转化为当前的 。
若有一个操作后的 对 ~ 均能达成,则输出 Yes
,否则 No
。
讲起来有些复杂,举个例子:原序列为 。
第一步,先排序,得 ;
第二步,把除最大值外的数末位操作为 ,得 ;
第三步,对 进行末位数循环:,发现 ,故 原数即可行,故答案为 Yes
。
Code
理论明白了,还要用代码实现。
The end. Thanks.
__EOF__

本文作者:Miracle Hydrogen
本文链接:https://www.cnblogs.com/dry-ice/p/cf1714e.html
关于博主:可耐拽冰!
版权声明:转载请注明来源哟~ QAQ
声援博主:UP UP UP !!!
本文链接:https://www.cnblogs.com/dry-ice/p/cf1714e.html
关于博主:可耐拽冰!
版权声明:转载请注明来源哟~ QAQ
声援博主:UP UP UP !!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】