ZOJ 3713 In 7-bit(进制转换)
2017-04-07 18:48
288 查看
题意:给一个字符串,先输出它的长度,但是长度要先用二进制表示出来,二进制的低7位左边如果没有1了,就直接将这7位二进制转化成16进制输出,如果左边还有1,就把这个低7位变成8位,最高的那位是1,然后把这个8位二进制转化成16进制输出,然后长度右移7位,重复这个操作。
比如说长度是1 001 000 001(2) = 577(10) ,先输出低7位1000 001 的16进制表示形式,但是因为这个低7位左边还有1,所以就输出11 000 001的16进制表示形式C1,然后还剩下100,再输出04。
长度处理完了之后再将每一个字符用16进制表示出来输出即可。空格也算字符。
思路:先对长度进行判断,如果长度右移7位后还有值,那么就需要将长度(二进制)左7位表示的十进制的值加上128之后再按16进制输出,并且长度右移7位(具体详见代码)
代码:
#include<stdio.h> #include<string.h> #define maxn 3000010 char str[maxn]; int main() { int t; scanf("%d",&t); getchar(); while(t--) { gets(str); int len=strlen(str); if(!len) { printf("00\n"); continue; } while(len) { int tot=(len%128); len>>=7; if(len) tot+=128; printf("%02X",tot); } len=strlen(str); for(int i=0;i<len;++i) printf("%02X",str[i]); printf("\n"); } return 0; }
ps:这题最难的应该就是题意了吧,读了半天都没懂。。。
相关文章推荐
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit(进制转换)
- ZOJ 3713 In 7-bit
- ZOJ 3713 In 7-bit
- ZOJ 3713 In 7-bit(模拟)
- zoj 3713 In 7-bit
- zoj 3713 In 7-bit
- zoj 3713 In 7-bit
- ZOJ 3713 In 7-bit 解题报告