解法如下:
#include <vector>
#include <iostream>
#include <string>
using namespace std;
string hex2string(unsigned char t)
{
string str;
int p = (t & 0xF0) >> 4;
if (p >= 0 && p <= 9)
str += p + '0';
else
str += p - 10 + 'A';
p = t & 0x0F;
if (p >= 0 && p <= 9)
str += p + '0';
else
str += p - 10 + 'A';
return str;
}
void format(vector<int>&v)
{
int t = 0;
for (int i = v.size() - 1; i >= 0; --i) {
v[i] += t;
t = v[i] / 256;
v[i] %= 256;
}
}
void mul10n(vector<int>& v, int p, int n)
{// v = p * 10^n
for (int i = 0; i < v.size(); ++i) {
v[i] = 0;
}
v[v.size() - 1] = p;
while (n-- > 0) {
for (int i = v.size() - 1; i >= 0; --i) {
v[i] *= 10;
}
format(v);
}
}
int main()
{
string str = "123456789";
while (cin >> str) {
vector<int> v(str.size()/2, 0);
vector<int> v2;
v2.resize(v.size());
for (int j = 0; j < str.size(); ++j) {
mul10n(v2, str[str.size() - j - 1] - '0', j);
for (int i = 0; i < v.size(); ++i) {
v[i] += v2[i];
}
format(v);
}
// cout << str << ":";
for (int i = 0; i < v.size(); ++i)
cout << hex2string(v[i]);
cout << endl;
}
return 0;
}