当前位置:网站首页>2021 CCPC 哈尔滨 I. Power and Zero(二进制 + 思维)
2021 CCPC 哈尔滨 I. Power and Zero(二进制 + 思维)
2022-07-04 20:13:00 【GHOSTANDBREAD】
借鉴于:I. Power and Zero(二进制,思维)_Looy_cai的博客-CSDN博客
思路:
将一串十进制的数转为二进制,然后各个数位相加,这时候从高到低可能不是递增的,所以要进行高位到低位的转换。直到从高到低都是不递减的状态。这时候最后一位,也就是数值最大的那一位,就是答案。
注意:
将一串数转为二进制时,每个数的二进制长度可能不同,所以要记录最大长度作为二进制数组的长度。
从高到低转换时,转换一遍是不能保证达到不递减的状态的,因为bit[1]和bit[2]转换后,bit[2]和bit[3]又转换后,bit[2]变小了,bit[1]又比bit[2]大了,所以要不断循环直到二进制数组达到从高到低都是不递减的状态。
代码:
#include<iostream>
#include<cstring>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int t, n;
int bit[50];
int main() {
scanf("%d", &t);
while(t --) {
scanf("%d", &n);
int x;
int len = -1;
memset(bit, 0, sizeof bit);
for(int i = 0; i < n; i ++) {
scanf("%d", &x);
int ind = 0;
while(x) {
bit[++ ind] += x % 2;
x /= 2;
}
len = max(len, ind);
}
bool ok = true;
while(ok) {
ok = false;
for(int i = len; i >= 2; i --) {
if(bit[i] > bit[i - 1]) {
ok = true;
int avg = (bit[i] * 2 + bit[i - 1]) / 3;
bit[i - 1] += (bit[i] - avg) * 2;
bit[i] = avg;
}
}
}
printf("%d\n", bit[1]);
}
return 0;
}
边栏推荐
- acwing 3302. Expression evaluation
- Jekins initialization password not found or not found
- 福昕PDF编辑器v10.1.8绿色版
- B站视频 声音很小——解决办法
- Play the music of youth
- 多模输入事件分发机制详解
- 华为模拟器ensp常用命令
- Record the online bug solving list (unfinished to be continued 7/4)
- Flet tutorial 04 basic introduction to filledtonalbutton (tutorial includes source code)
- [micro service SCG] use of predict
猜你喜欢
随机推荐
Flet tutorial 06 basic introduction to textbutton (tutorial includes source code)
Foxit pdf editor v10.1.8 green version
华为ensp模拟器 DNS服务器的配置
uniapp 富文本编辑器使用
Browser render page pass
go defer的使用说明
网件r7000梅林系统虚拟内存创建失败,提示USB磁盘读写速度不满足要求解决办法,有需要创建虚拟内存吗??
LeetCode 8. String conversion integer (ATOI)
LeetCode 871. Minimum refueling times
What if the brightness of win11 is locked? Solution to win11 brightness locking
JS closure
Hands on deep learning (III) -- convolutional neural network CNN
杰理之AD 系列 MIDI 功能说明【篇】
Remember to build wheels repeatedly at one time (the setting instructions of obsidian plug-in are translated into Chinese)
colResizable.js自动调整表格宽度插件
记一次重复造轮子(Obsidian 插件设置说明汉化)
软件开发过中的采购
Go language notes (4) go common management commands
【申博攻略】六.如何联系心仪的博导
Explication détaillée du mécanisme de distribution des événements d'entrée multimodes