本题的目标是通过最少的变换次数,使得长度为偶数 n 的序列中,奇数的个数与偶数的个数相等(即各有 m=n/2 个)。每次变换可以对任意一个数字执行以下两种操作之一:乘以 2,或除以 2 并向下取整。
关键观察和算法步骤:
cnt_odd 记录当前奇数的个数,用 cnt_even 记录当前偶数的个数。cnt_odd == cnt_even,说明已经满足要求,最少变换次数为 0。小蓝有一个长度为偶数的正整数序列,他想通过若干次变换,使得序列中奇数的个数和偶数的个数恰好相等。
小蓝可以对序列中的任意一个数字进行以下两种变换之一:
例如,将 6 除以 2 后变为 3;将 3 乘以 2 后变为 6。
小蓝希望用最少的变换次数达到目标。请你帮他计算,最少需要多少次变换。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.