测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A36361. 变长编码

填空题 较难

题目描述

变长编码

参考答案

#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; 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; }
上一题 下一题