C++ 数组除2操作,最小次数得到开心数
思路:对于一个数,只要它能被2整除,就一定不是开心的数,否则就需要除以2。因此,我们可以遍历整个数组,对于每一个数,判断是否能被2整除,如果不能,就将它除以2,并记录下操作次数。最后判断数组的和是否为偶数,如果是,则返回操作次数,否则返回-1。
代码如下:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int count = 0;
for (int i = 0; i < n; i++) {
if (arr[i] % 2 != 0) {
arr[i] /= 2;
count++;
}
}
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
}
if (sum % 2 == 0) {
cout << count << endl;
} else {
cout << -1 << endl;
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/ord1 著作权归作者所有。请勿转载和采集!