ZOJ 3713 In 7-bit 解题报告

本文介绍了一个简单的编程问题,即如何将给定的字符串按特定规则编码成二进制并转换为16进制进行输出。具体包括字符串长度的计算、二进制表示、右移操作及最终的16进制输出实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

题意:

给你一些可能包含空格的字符串,对于每个串,计算它的长度,用7位二进制表示,若7位能放完,则第8位为0,否则第8位为1,7位为低7位,然后长度右移7位,继续用7位二进制表示。最后将转换后的长度和原字符串用16进制输出。

解法:

只要读懂了题意,就暴力……

//Time: 350ms
//Memory: 3116KB
//Length: 619B
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#define MAXN 3000010
#define INF 1000000000
using namespace std;
char str[MAXN];
int main()
{
    //freopen("/home/moor/Code/input.txt","r",stdin);
    int ncase,len,tlen;
    scanf("%d",&ncase);
    gets(str);
    while(ncase--)
    {
        gets(str);
        tlen=len=strlen(str);
        while(1)
        {
            printf("%02X",(len&127)+(len>127?128:0));
            len>>=7;
            if(len==0)  break;
        }
        for(int i=0;i<tlen;++i)
            printf("%02X",(int)str[i]);
        printf("\n");
    }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值