题目大意:给你一串代码,要求进行解码。解码规则详见题目。

解题思路:这是一道字符串处理的题目。

首先,有这么几种情况输出Error:

1.代码中出现除了0和1外的字符。

2.代码长度不是8的倍数。

3.在输出字母时发现转化后的数字大于25。

4.进行加法时,第二个数不是一个数单元。

其余情况均能解码。解码时转化一下即可。

答案输出的技巧:本题如果一个操作一个操作输出,可能遇到输出到一半发现Error的情况。解决方案是把答案存在一个字符串当中,最后整个字符串输出即可。

C++ Code:

#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
using std::string;
char buf[171118],s[11];
int bufpos;
string ans;
inline void error(){puts("Error");exit(0);}
inline void get(char* s){for(int i=0;i<8;++i,++bufpos)*s++=buf[bufpos];}
int main(){
ans="";
scanf("%s",buf);
for(int i=0;buf[i];++i)if(buf[i]!='0'&&buf[i]!='1')error();
if(strlen(buf)%8)error();
bufpos=0;
while(buf[bufpos]=='0'||buf[bufpos]=='1'){
get(s);
if(s[0]=='1'&&s[1]=='0'&&s[2]=='1'){
int p=0;
for(int i=7,j=1;i>2;--i,j<<=1)
p+=(s[i]-'0')*j;
if(p<26)ans+=(char)(p+'A');else error();
}else
if(s[0]=='1'&&s[1]=='1'&&s[2]=='1')ans+=' ';else
if(s[0]=='0'){
int p=0,pp;
for(int i=7,j=1;i;--i,j<<=1)
p+=(s[i]-'0')*j;
pp=p>>1;p=0;
if(buf[bufpos]!='0')error();
get(s);
for(int i=7,j=1;i;--i,j<<=1)
p+=(s[i]-'0')*j;
p>>=1;p+=pp;
if(p==0)ans+='0';else{
int w=1;
for(;w<=p;w*=10);
for(w/=10;w;w/=10)ans+=(char)((p/w)^'0'),p%=w;
}
}
}
printf("%s\n",ans.c_str());
return 0;
}

[洛谷P3982]龙盘雪峰信息解析器的更多相关文章

  1. 洛谷 - Sdchr 的邀请赛 T4 信息传递

    (乱搞艹爆正解系列) 对不起,由于博主太弱了,并不会正解的多项式exp(甚至多项式exp我都不会2333). 只能来说一说我是怎么乱搞的啦QWQ 首先这个题最关键的性质是: 一个在原置换 g 中长度为 ...

  2. 【洛谷P2028 龙兄摘苹果】动态规划

    分析 第二类striling数 考虑最后一个数到底是放在之前的任意一个集合内,还是自成一个集合 \[F_{i\ j}=F_{i-1\ j-1}+j\times F_{i-1,j} \] AC代码 #i ...

  3. 题解 洛谷P4035/BZOJ1013【[JSOI2008]球形空间产生器】

    题目链接在这QvQ "你要求出这个n维球体的球心坐标",这使我想到的解方程...... 先假设n=2,这是一个二维平面.设圆心的坐标为\((x,y)\),有两个坐标\((a_1,b ...

  4. 洛谷 P1019 单词接龙 (DFS)

    题目传送门 当时一看到这题,蒟蒻的我还以为是DP,结果发现标签是搜索-- 这道题的难点在于思路和预处理,真正的搜索实现起来并不难.我们可以用一个贪心的思路,开一个dic数组记录每个单词的最小重复部分, ...

  5. 洛谷P2661 信息传递(最小环,并查集)

    洛谷P2661 信息传递 最小环求解采用并查集求最小环. 只适用于本题的情况.对于新加可以使得两个子树合并的边,总有其中一点为其中一棵子树的根. 复杂度 \(O(n)\) . #include< ...

  6. 【题解】洛谷P2661 [NOIP2015TG] 信息传递

    题目来源:洛谷P2661 思路 运用并查集查找图中最小环的长度 如果A传递信息给B 就从A加一条边指向B 并更新A的父节点 从A到父节点的路径长度为B到父节点的路径长度+1 如果有两个点的祖先相同而且 ...

  7. 洛谷p2370yyy2015c01的U盘题解

    没什么特殊的想法 就是看自己很久没有更新关于题解类的文章了而已 (其实这是我好久之前做的, 只是把它从洛谷博客搬到了这里而已) 题目 首先分析题目要二分 他长成这个亚子太二分了 所以就要二分 最好是先 ...

  8. 洛谷P4047 [JSOI2010]部落划分题解

    洛谷P4047 [JSOI2010]部落划分题解 题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落 ...

  9. [洛谷OJ] P1114 “非常男女”计划

    洛谷1114 “非常男女”计划 本题地址:http://www.luogu.org/problem/show?pid=1114 题目描述 近来,初一年的XXX小朋友致力于研究班上同学的配对问题(别想太 ...

随机推荐

  1. Clonezilla制作镜像时报错: errextfsclone.c:bitmap free count err

    在检查时选中下面的选项, 如下图: -fsck-src-part Interactively check and  repair source file

  2. node——将数据写入data.json防覆盖

    前续 1.读取data.json文件内容 2.判断是否是第一次读取data.json(第一次读取则data.json是没有的) 3.将data.json数据转为数组list 4.将写入数据加入数组li ...

  3. IOS - [UIDevice currentDevice] name/model/localizedMode/systemName/systemVersion...../userInterfaceIdiom

    + (UIDevice *)currentDevice; @property(nonatomic,readonly,retain) NSString    *name;              // ...

  4. MATLAB解析PFM格式图像

    http://www.p-chao.com/ja/2016-09-27/matlab%E8%A7%A3%E6%9E%90pfm%E6%A0%BC%E5%BC%8F%E5%9B%BE%E5%83%8F/ ...

  5. Linux 操作系统启动流程

    1.加载bios bios中包含的硬件CPU 内存 硬盘等相关信息 2.读取MBR 读取完bios信息之后,计算机会查找bios制定的硬盘MBR引导扇区,将其内容复制到 0x7c00 地址所在的物理内 ...

  6. Python学习————字符串相关操作

    s.capitalize()-------首字母大写s.upper()------全大写s.lower()------全小写s.swapcase()---大小写翻转s.title()------每个隔 ...

  7. jvm 虚拟机参数_方法区内存分配

    1.方法区( 永久区 ) 和堆一样,方法区是一块所有线程共享的区域,他用于保存系统类的信息.默认情况下 -XX:MaxPermSize 为 64m.如果系统运行时产生大量的类,就需要设置一个合适方法区 ...

  8. Leetcode_num1_Single Number

    好久没有做题啦.从今天開始刷Leetcode的题.希望坚持的时间能长一点. 先从ac率最高的Single Number開始吧. 题目: Given an array of integers, ever ...

  9. android init进程分析 init脚本解析和处理

    (懒人近期想起我还有csdn好久没打理了.这个android init躺在我的草稿箱中快5年了.略微改改发出来吧) RC文件格式 rc文件是linux中常见的启动载入阶段运行的文件.rc是run co ...

  10. Android技术归档

    各位小伙伴们.以后小巫的一些开源码都会上传到github中,所以欢迎大家Follow https://github.com/devilWwj 基于眼下我基本的技术领域在Android上,以后关于And ...