zoj 3713 In 7-bit(题目特难懂,十进制、二进制、十六进制的转换问题)
来源:互联网 发布:js复选框是否被选中 编辑:程序博客网 时间:2024/05/22 13:26
1、http://acm.hust.edu.cn/vjudge/contest/view.action?cid=44261#overview
2、题目大意:
给定一个字符串,按照十六进制输出,但是对于字符串的长度的输出比较麻烦,首先是将长度len转换成二进制,取后七位,如果除去后七位前边还有1那么就在第八位位置加上1,然后将len右移7位,继续上述步骤,例如10001000100,那么第一次取出来的后七位就是1000100,因为前边还有1,所以第一次取出来的变为11000100,然后将len右移7位得到1000,依次输出他们的十六进制就可以了
对于一个十进制的数先转换成二进制取后七位,再转换成十进制,就相当于十进制的数取后128位,也就是len%128
3、题目:
Description
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
342yukkuri 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
0234321779756B6B75726920736869746569747465206E652121219A0168747470733A2F2F656E2E77696B6970656469612E6F72672F77696B692F416E737765725F746F5F4C6966652C5F7468655F556E6976657273652C5F616E645F45766572797468696E6723416E737765725F746F5F7468655F556C74696D6174655F5175657374696F6E5F6F665F4C6966652E32435F7468655F556E6976657273655F616E645F45766572797468696E675F2E323834322E3239
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;char a[3000005];int main(){ int t; while(scanf("%d",&t)!=EOF) { getchar(); while(t--) { gets(a); int len=strlen(a); int l=len; if(len==0) printf("00\n"); else { while(l) { int tmp=l%128; l/=128; if(l) { tmp+=128; } printf("%02X",tmp); } for(int i=0; i<len; i++) printf("%02X",a[i]); printf("\n"); } } } return 0;}
- zoj 3713 In 7-bit(题目特难懂,十进制、二进制、十六进制的转换问题)
- ZOJ 3713 In 7-bit (题目巨难懂)
- 二进制,八进制,十进制,十六进制之间转换问题
- 二进制、十进制、十六进制转换
- Java使用bit array实现二进制,十进制,十六进制值之间的转换
- 十进制与二进制八进制十六进制的转换
- [VB]十进制/十六进制/二进制 间的转换
- 十进制、二进制、八进制、十六进制之间的转换
- 二进制十进制十六进制之间的转换
- 二进制、八进制、十进制、十六进制的转换
- 二进制、八进制、十进制、十六进制之间的转换
- 二进制、八进制、十进制、十六进制之间的转换
- ubuntu 下二进制 ,十进制,十六进制的转换
- 十进制,二进制,八进制,十六进制之间的转换
- 二进制,十六进制,八进制 十进制的转换
- 二进制、八进制、十进制、十六进制之间的转换
- 二进制、八进制、十进制、十六进制之间的转换
- 二进制、八进制、十进制、十六进制之间的转换
- a=a+b和a+=b的区别
- 如何选用办公软件——OA软件的适用性
- 删除所有svn文件(一个目录和其各级子目录下的) 两种方法
- Eclipse设置JVM内存
- 程序员学习能力提升三要素
- zoj 3713 In 7-bit(题目特难懂,十进制、二进制、十六进制的转换问题)
- rman duplicate 介绍
- IE6常见bug
- SharedPreferences 使用
- 8-基于OMAPL138开发板的Linux应用程序开发入门指南
- iOS开发必备,告别众多无聊代码
- Apache Zookeeper入门1
- 虚拟机无法启动、ubuntu启动后循环返回登录界面解决方法小记
- 《程序员的修炼——从优秀到卓越》