xtu read problem training 2 B - In 7-bit

In 7-bit

Time Limit: 2000ms

Memory Limit: 65536KB

This problem will be judged on ZJU. Original ID: 3713
64-bit integer IO format: %lld      Java class name: Main

Very often, especially in programming contests, we treat a sequence of non-whitespace characters as a string. But sometimes, a string may contain whitespace characters or even be empty. We can have such strings quoted and escaped to handle these cases. However, a different approach is putting the length of the string before it. As most strings are short in practice, it would be a waste of space to encode the length as a 64-bit unsigned integer or add a extra separator between the length and the string. That‘s why a 7-bit encoded integer is introduced here.

To store the string length by 7-bit encoding, we should regard the length as a binary integer. It should be written out by seven bits at a time, starting with the seven least-significant (i.e. 7 rightmost) bits. The highest (i.e. leftmost) bit of a byte indicates whether there are more bytes to be written after this one. If the integer fits in seven bits, it takes only one byte of space. If the integer does not fit in seven bits, the highest bit is set to 1 on the first byte and written out. The integer is then shifted by seven bits and the next byte is written. This process is repeated until the entire integer has been written.

With the help of 7-bit encoded integer, we can store each string as a length-prefixed string by concatenating its 7-bit encoded length and its raw content (i.e. the original string).

Input

There are multiple test cases. The first line of input is an integer T indicating the number of test cases.

Each test case is simply a string in a single line with at most 3000000 characters.

Output

For each test case, output the corresponding length-prefixed string in uppercase hexadecimal. See sample for more details.

Sample Input

3
42
yukkuri shiteitte ne!!!
https://en.wikipedia.org/wiki/Answer_to_Life,_the_Universe,_and_Everything#Answer_to_the_Ultimate_Question_of_Life.2C_the_Universe_and_Everything_.2842.29

Sample Output

023432
1779756B6B75726920736869746569747465206E65212121
9A0168747470733A2F2F656E2E77696B6970656469612E6F72672F77696B692F416E737765725F746F5F4C6966652C5F7468655F556E6976657273652C5F616E645F45766572797468696E6723416E737765725F746F5F7468655F556C74696D6174655F5175657374696F6E5F6F665F4C6966652E32435F7468655F556E6976657273655F616E645F45766572797468696E675F2E323834322E3239

Source

The 10th Zhejiang Provincial Collegiate Programming Contest

Author

WU, Zejun

解题:首先输出的字符串的长度编码。对的,每次输出7个二进制位,但是要用十六进制表示这7个二进制位表示的数字。把长度表示成二进制后,如果分割成一段7位二进制后,后面还有数字,那么,就要在输出的7个二进制位前面输出个1,在这七个二进制位前面输出一个0.后面的就是输出字符,把每个字符以十六进制数的形式输出即可。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <algorithm>
 6 #include <climits>
 7 #include <vector>
 8 #include <queue>
 9 #include <cstdlib>
10 #include <string>
11 #include <set>
12 #define LL long long
13 #define INF 0x3f3f3f3f
14 using namespace std;
15 char str[3000100];
16 int main(){
17     int t,i,len;
18     scanf("%d",&t);
19     getchar();
20     while(t--){
21         gets(str);
22         len = strlen(str);
23         if(!len){puts("00");continue;}
24         while(len){
25             int temp = len&127;
26             len >>= 7;
27             if(len) temp |= 128;
28             if(temp < 16) printf("0");
29             printf("%X",temp);
30         }
31         for(i = 0; str[i]; i++)
32             printf("%X",str[i]);
33         printf("\n");
34     }
35     return 0;
36 }

xtu read problem training 2 B - In 7-bit

时间: 2024-12-17 06:34:15

xtu read problem training 2 B - In 7-bit的相关文章

xtu read problem training 4 B - Multiplication Puzzle

Multiplication Puzzle Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID: 165164-bit integer IO format: %lld      Java class name: Main The multiplication puzzle is played with a row of cards, each containing a s

xtu read problem training 4 A - Moving Tables

Moving Tables Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on ZJU. Original ID: 102964-bit integer IO format: %lld      Java class name: Main The famous ACM (Advanced Computer Maker) Company has rented a floor of a building wh

xtu read problem training 3 A - The Child and Homework

The Child and Homework Time Limit: 1000ms Memory Limit: 262144KB This problem will be judged on CodeForces. Original ID: 437A64-bit integer IO format: %I64d      Java class name: (Any) Once upon a time a child got a test consisting of multiple-choice

xtu read problem training A - Dividing

A - Dividing Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Description Marsha and Bill own a collection of marbles. They want to split the collection among themselves so that both receive an equal share of the marbles.

xtu read problem training 3 B - Gears

Gears Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on ZJU. Original ID: 378964-bit integer IO format: %lld      Java class name: Main Bob has N (1 ≤ N ≤ 2*105) gears (numbered from 1 to N). Each gear can rotate clockwise or co

xtu read problem training B - Tour

B - Tour Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Description John Doe, a skilled pilot, enjoys traveling. While on vacation, he rents a small plane and starts visiting beautiful places. To save money, John must de

A Gentle Guide to Machine Learning

A Gentle Guide to Machine Learning Machine Learning is a subfield within Artificial Intelligence that builds algorithms that allow computers to learn to perform tasks from data instead of being explicitly programmed. Got it? We can make machines lear

A Rigorous &amp; Readable Review on RNNs

A Rigorous & Readable Review on RNNs This post introduces a new Critical Review on Recurrent Neural Networks for Sequence Learning. Twelve nights back, while up late preparing pretty pictures for a review onRecurrent Neural Networks for Sequence Lear

xtu DP Training C.炮兵阵地

炮兵阵地 Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID: 118564-bit integer IO format: %lld      Java class name: Main 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表