POJ 2798 2进制转换为16进制 解题报告
POJ 2798 2进制转换为16进制 解题报告
编号:2798
考查点:进制转换
思路: 把二进制数当字符串处理,然后每四个数组成一个16进制数
提交情况: 有点小麻烦,不过还是轻松搞定
Source Code:
//POJ Grids 2798 WA
#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;
}
总结: 小水题
By Ns517
Time 09.03.06