末尾零的含义
二进制表示末尾零的个数等于该数分解后因子 2 的个数。因此序列所有元素乘积末尾零的总数,就等于每个元素包含因子 2 的个数之和。
操作对因子 2 的影响
每次操作可以将一个元素 ai 增加 1,变为 ai+1。这会改变该元素因子 2 的个数。为了最大化总末尾零,我们希望选择那些加 1 后因子 2 个数增加最多的元素进行操作(增加量 <0 的情况不计入,因为可以不操作该元素)。
贪心策略
给定一个包含 n 个正整数的序列 a1,a2,…,an。你可以对该序列进行至多两次操作,每次操作可以选择一个元素,将其值增加 1。最终,你需要让序列中所有元素的乘积在二进制表示下末尾的零尽可能多。请计算最多能获得多少个末尾零。
序列长度 n 不超过 105,所有 ai 均为不超过 109 的正整数。
第一行包含一个整数 n,表示序列的长度。 第二行包含 n 个整数,依次表示序列 a1,a2,…,an。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.