ZOJ 3713 In 7-bit 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5016
backgroundlink:http://hi.baidu.com/wenzheng38/item/6de009f9273e1f1fa72988e1
题目大意(说实话题意挺难理解的):有这么一种字符串存储方式叫做7位编码,把字符串长度缀在前面存下,后面存字符串信息。长度是一个整数,每次取其最低7位,若7为之上还有数,则在第八位上添1,将此数右移7位循环上述操作,到零为止。字符串信息按每个字符的ASCII码值来存即可(所有数均为二位十六进制)。
题目分析:模拟,注意位数、输出等。
code:
#include<stdio.h>
#include<string.h>
char s[3000010];
int main()
{
int i,t,len;
scanf("%d%*c",&t);//scanf("%d\n",&t);错
while(t--)
{
gets(s);
len=strlen(s);
if(!len)
{
printf("00\n");
continue;
}
while(len)
{
printf("%02X",len%128+((len/128>0)?128:0));
//条件运算符的两个括号不能省,否则wrong
len>>=7;
}
len=strlen(s);
for(i=0;i<len;i++)
{
printf("%02X",s[i]);
}
putchar('\n');
}
return 0;
}