随笔 - 164  文章 - 0  评论 - 4  阅读 - 9878

AtCoder Beginner Contest 276-D

D——Divide by 2 or 3

题目链接:https://atcoder.jp/contests/abc276/tasks/abc276_d

题目说了一个什么事呢,其实就是给你n个数字,你可以执行相应的操作——如果数字是2的倍数,可以将该数字除以2;如果数字是3的倍数,可以将该数字除以3。

那么问你的就是你能不能通过一定的操作令所有的数都相同,如果可以,找到所需最小的操作数。

问题其实很简单,自己刚开始做的时候想复杂了。

其实我们可以先找所有数字的最大公因数a,a就是我们完成所有操作后数组元素相等的那个数(为啥呢?我觉得吧,将每一个数都拆分成2和3和一个其他的数的乘积就能理解了),然后将所有的元素都进行除2除3的操作,尝试将其化为a。如果尝试的过程中不能化成a,那么它的因子里面就存在着除了2、3、a以外的其他因子,那么它就是数组里不能满足要求的元素,输出-1;没有这种情况出现时,给定的数组可以满足题目的要求,统计一下除2和除3的次数即可。

多说无益,上代码

posted on   Qiansui  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示