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

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

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

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

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

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

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

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

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

C++ Code:

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<string>
  4. #include<cstring>
  5. using std::string;
  6. char buf[171118],s[11];
  7. int bufpos;
  8. string ans;
  9. inline void error(){puts("Error");exit(0);}
  10. inline void get(char* s){for(int i=0;i<8;++i,++bufpos)*s++=buf[bufpos];}
  11. int main(){
  12. ans="";
  13. scanf("%s",buf);
  14. for(int i=0;buf[i];++i)if(buf[i]!='0'&&buf[i]!='1')error();
  15. if(strlen(buf)%8)error();
  16. bufpos=0;
  17. while(buf[bufpos]=='0'||buf[bufpos]=='1'){
  18. get(s);
  19. if(s[0]=='1'&&s[1]=='0'&&s[2]=='1'){
  20. int p=0;
  21. for(int i=7,j=1;i>2;--i,j<<=1)
  22. p+=(s[i]-'0')*j;
  23. if(p<26)ans+=(char)(p+'A');else error();
  24. }else
  25. if(s[0]=='1'&&s[1]=='1'&&s[2]=='1')ans+=' ';else
  26. if(s[0]=='0'){
  27. int p=0,pp;
  28. for(int i=7,j=1;i;--i,j<<=1)
  29. p+=(s[i]-'0')*j;
  30. pp=p>>1;p=0;
  31. if(buf[bufpos]!='0')error();
  32. get(s);
  33. for(int i=7,j=1;i;--i,j<<=1)
  34. p+=(s[i]-'0')*j;
  35. p>>=1;p+=pp;
  36. if(p==0)ans+='0';else{
  37. int w=1;
  38. for(;w<=p;w*=10);
  39. for(w/=10;w;w/=10)ans+=(char)((p/w)^'0'),p%=w;
  40. }
  41. }
  42. }
  43. printf("%s\n",ans.c_str());
  44. return 0;
  45. }

[洛谷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. JSP Java服务器页面

    大家好!好久不见!今日我们开始学习JSP了,一些记录基础性的知识在这里与大家分享. 先说下URL(Uniform Resource Locator 统一资源定位符). URL包括传输协议(http:/ ...

  2. 定位前后端bug

      说明 1 : js是静态资源,会缓存到浏览器的客户端,为了清除缓存,需要强制刷新页面,所有的东西强制的到服务器上拿一下 说明 2 :http状态码,服务器响应的一个状态码,标记不同的处理结果 说明 ...

  3. HDU 5762 Teacher Bo ( 暴力 )

    链接:传送门 题意:给出N个点( Xi , Yi ),和点的最远位置M,询问是否有这样的四个点 (A,B,C,D)(A<B,C<D,A≠CorB≠D) ,AB的曼哈顿路径长度等于CD的曼哈 ...

  4. [WPF,XAML] 跳动的心

    原文:[WPF,XAML] 跳动的心 没什么艺术细胞,原谅,原谅! <Canvas Width="0" Height="0"> <Canvas ...

  5. VUE:条件渲染和列表渲染

    条件渲染 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  6. promise的原理

    promise的原理 一旦状态改变,就不会再变,任何时候都可以得到这个结果.Promise 对象的状态改变,只有两种可能:从 pending 变为 fulfilled 和从 pending 变为 re ...

  7. synchronized的实现原理及锁优化

    记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized.对于当时的我们来说,synchronized是如此的神奇且强大.我们赋予它一个名字“同步”,也成为我们解决多线程情况的良药 ...

  8. BTrace介绍和生产环境样例

    BTrace latest realese: release-1.2.5.1 BTrace guide(1.2-20101020): http://kenai.com/projects/btrace/ ...

  9. [Chromium]怎样安全的使用PostTask

    PostTask參数决策树 怎样传递绑定的对象 官方的解释总是最权威.有疑问看这里或者直接看代码中的说明: bind_helpers.h. 传值方式 描写叙述 this 或 对象指针 假设对象本身是一 ...

  10. 为什么选性别会导致兴趣都选中-vue

    为什么选性别会导致兴趣都选中-vue <%@ page language="java" import="java.util.*" pageEncoding ...