4355: GESP C++ 四级 4变长编码202309

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:2 解决:1

题目描述

样例输入 复制

0

样例输出 复制

00

提示

#include <iostream>
using namespace std;
void output_digit(int d) {
    if (d >= 10)
        cout << (char)('A' + d - 10);
    else
        cout << (char)('0' + d);
}
void output_code(int s) {
    output_digit(s >> 4);
    output_digit(s & 0x0f);
}
int main() {
    long long n = 0;
    cin >> n;
    int split[10];
    int l = 0;
    if (n==0) {
    	cout<<"00";
    	return 0;
	}
    while (n > 0) {
        split[l] = (int)(n & 0x7f);
        n >>= 7;
        l++;
    }
    for (int i = 0; i < l - 1; i++)
        split[i] |= 0x80;
    output_code(split[0]);
    for (int i = 1; i < l; i++) {
        cout << " ";
        output_code(split[i]);
    }
    cout << endl;
    return 0;
}