游游拿到了一个数组,她每次可以进行如下操作: ·选择一个元素,使其除以2,向下取整。 游游想知道,她最少多少次操作可以使得所有元素相等?
区块链毕设网qklbishe.com为您提供问题的解答
游游拿到了一个数组,她每次可以进行如下操作:
·选择一个元素,使其除以2,向下取整。
游游想知道,她最少多少次操作可以使得所有元素相等?
不懂更好的数学方法,用multiset暴力做吧!
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); std::multiset<int> ms(a.begin(), a.end()); long long cnt = 0; while (*ms.begin() != *ms.rbegin()) { int num0 = *ms.begin(), num1 = *ms.rbegin(); while (num1 > num0) { num1 /= 2; cnt++; } ms.erase(std::prev(ms.end())); ms.insert(num1); } std::cout << cnt; }
17:48
以上就是关于问题游游拿到了一个数组,她每次可以进行如下操作:
·选择一个元素,使其除以2,向下取整。
游游想知道,她最少多少次操作可以使得所有元素相等?的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训