打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
POJ 2798 2进制转换为16进制 解题报告
2798:2进制转化为16进制
查看
提交
统计
提示
提问
总时间限制:
1000ms
内存限制:
65536kB
描述
输入一个2进制的数,要求输出该2进制数的16进制表示。
在16进制的表示中,A-F表示10-15
输入
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000
输出
n行,每行输出对应一个输入。
样例输入
2100000111
样例输出
207
#include <string>
#include <iostream>
using namespace std;
int main()
{
int n;cin>>n;
while (n--)
{
char d2x[17] = "0123456789ABCDEF";
int flag[4] = {1,2,4,8};
string s;cin>>s;
int len = s.length();
int mod = len%4;
int num = 0;
for (int i=mod;i>0;i--)
{
if (s[mod-i]=='1')
{
num += flag[i-1];
}
}
if (mod)
cout<<d2x[num];
for (int i=mod;i<len;i+=4)
{
num = 0;
for (int j=0;j<4;j++)
{
if (s[i+j]=='1')
{
num += flag[3-j];
}
}
cout<<d2x[num];
}
cout<<endl;
}
return 0;
}
多谢大神!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
牛客不进位乘法(dfs+数学)
第一个只出现一次的字符
求数组乘集最大结果
最长公共子序列 与 最长公共连续子串
网易笔试一题
求两个已排序数组的中位数的、O(lgn)时间的算法(可以转化为不仅仅求中位数)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服