【进制问题】取某个十进制数(二进制已知为8位)的二进制形式的低4位与高3位的方法
十进制数m有01234567共8位
取123位置的二进制数方法
(m >> 4) & 0x07
取4567位置的二进制数方法
m & 0x0f
例题 响应报文时间
样例1
输入
3
0 20
1 10
8 20
输出
11
样例2
输入
2
0 255
200 60
输出
260
样例3
输入
1
5 100
输出
105
C++代码
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int n, res = N;
int main()
{
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
cin >> n;
while (n--)
{
int t, m;
cin >> t >> m;
if (m < 128)
{
res = min(res, t + m);
}
else
{
int exp = (m >> 4) & 0x07;// 取高三位
int mant = m & 0x0f; // 取低四位
res = min(res, (mant | 0x10) << (exp + 3));
}
}
cout << res;
return 0;
}
分类:
基础算法 / 进制转换
, 基础算法
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析