• 首先输入n/8​ 个数(这里默认都是正整数)。
  • 把这n/8个数都转为二进制形式,然后依次排列。
  • 这时会得到一段 01 序列,把它按同种数字分段。举个例子:假定得到的序列为 11010010,按 0 和 1 分段得:11, 0,1,00,1,0。
  • 将这些数字段转为八位二进制形式,第一位表示它是什么数字,后七位为数字个数的二进制表示。如序列 11 一共有 2 个 1,数字为 1,而 2 的七位二进制形式为 0000010,所以它的八位二进制表示是 10000010。
  • 最后,输出每个八位二进制的十进制形式就可以了。

代码:

#include <bits/stdc++.h>
using namespace std;
int n,a[1000001],tb[9],t,s,con;
int main()
{scanf("%d",&n);n /= 8;for(int i = 0; i < n; i++){memset(tb,0,sizeof(tb));s = 8;//s:tb[]的下标 ,=8是因为最后二进制是8位(tb下标从1开始)scanf("%d",&t);while(t){tb[s--] = t % 2;//tb:十进制转二进制后的数组t /= 2;}for(int j = 1; j < 9; j++){;//con:a[]的下标兼长度a[++con] = tb[j];//把tb[]与a[]连接}}//for(int i = 1; i <= con; i++) cout<<a[i]<<" ";s = 1;//片段的长度t = a[1];//片段都是哪一种颜色for(int i = 2; i <= con; i++){if(a[i] == t) s++;//如果相同,说明是同一个片段else{printf("%d ",s + t * 128);//因为片段长度为末尾(即s),+ t * (2^7)是因为题目要求8位二进制,也就是2^7,*t是因为t是二进制数的首位t = a[i];//从新将片段颜色初始化s = 1;//从新将片段长度初始化}}printf("%d",s + t * 128);//注意末尾也要输出return 0;
}


还要注意一点:在这里tp数组的大小必须要开成[9],否则(比如开成[1000001]),会变成这个样子:


位运算做法:

#include <bits/stdc++.h>
#define MAX (80000 + 7)int N, ac, now, sum, a[MAX];int main()
{scanf("%d", &N);for (int i = 1, x; i <= N>>3; i++){scanf("%d", &x);for (int p = 7; p >= 0; p--)a[++ac] = x >> p & 1;}now = a[1], sum = 1;for (int i = 2; i <= N; i++){if (a[i] != a[i-1] || sum==127) {printf("%d ", now << 7 | sum);now = a[i], sum = 1;}else sum++;} printf("%d ", now << 7 | sum);
}

洛谷P2556 [AHOI2002]黑白图像压缩(简单模拟题)相关推荐

  1. 洛谷P4752 Divided Prime(简单模拟) 题解

    题目来源: https://www.luogu.org/problemnew/show/P4752 题目描述: 题目描述 给定一个数字 AA ,这个 AA 由 a_1,a_2,\cdots,a_Na1 ...

  2. 洛谷P1119 灾后重建 图论 脑洞题

    洛谷P1119 灾后重建 图论   脑洞题   floyd    floyd中 k 的意义 通过前 k 个点 作为中间的节点 更新 i 到 j 的最短路 也就是 只经过前 k 个点 的最短路 帮助理解 ...

  3. CCF CSP 201609-2 火车购票(C++语言100分)[简单模拟题]

    1. 问题链接:CCF 201609-2 火车购票 试题编号: 201609-2 试题名称: 火车购票 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请实现一个铁路购票系统的 ...

  4. 洛谷 - P1308 统计单词数(字符串+模拟)

    题目链接:点击查看 题目大意:给出一个字符串a和字符串b,现在问字符串b中有多少个单词与字符串a相等,并记录第一次出现的位置 题目分析:看似很简单的一个模拟题,其实包含了不少需要注意的地方: stri ...

  5. 洛谷入门1【顺序结构】题单题解

    目录 超级玛丽 字母转换 数字反转 再分肥皂水 小鱼的游泳时间 小学数学N合1 三角形面积 苹果和虫子 对角线 上学迟到 [入门1]顺序结构 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu ...

  6. 洛谷P7577 简单模拟题

    题目描述 给定一个长度为 nn 的序列 ss. qq 次询问,每个询问形如 a b c d e f,需要你求出下面式子的值: \sum_{L=a}^{b}[e\le G(F(L,c),F(L,c+1) ...

  7. 洛谷 P1598 垂直柱状图【字符串+模拟】

    P1598 垂直柱状图 题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数.严格地按照输出样例来安排你的输出格式. ...

  8. 洛谷 P1055 ISBN号码【字符串+模拟】

    P1055 ISBN号码 题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x",其 ...

  9. 洛谷 P1031 均分纸牌【交叉模拟】

    题目描述 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 ...

最新文章

  1. 【Boost】boost库asio详解2——io_service::run函数无任务时退出的问题
  2. 抽奖自定义中奖概率总结
  3. 【CyberSecurityLearning 58】PHP代码注入
  4. node --- [express项目] 开发环境下使用morgan控制台输出访问信息
  5. 汇编语言-013(DAS 、DAA与DAS、QWORD类型用SBB借位减法、编写指令将AX符号扩展到EAX,不能使用CWD、用SHR和条件判断指令将AL循环右移一位、SHLD、压缩十进制转换)
  6. (王道408考研操作系统)第四章文件管理-第一节9:文件系统的层次结构
  7. LeetCode(868)——二进制间距(JavaScript)
  8. leetcode44:wildcard
  9. Altium AD20删除机械层MECH
  10. 数据采集与数据挖掘是什么?有什么区别?
  11. CISSP认证考试指南(第7版)
  12. 【C语言:丹尼斯·里奇的不朽遗产 】
  13. 英语学习(九)复合句
  14. 苹果手机可以微信分身吗_微信和微信分身版有区别吗
  15. 一文读懂SpringCloud全家桶
  16. Qt3升至Qt4需要注意的几件事项浅谈
  17. PLSQL官网, 及个版本下载地址和下载方法
  18. 《深度学习》学习笔记
  19. 倾斜摄影三维实景模型为智慧城市提供全流程可视化支撑
  20. 前端工程师成长之多看好书

热门文章

  1. 一个目标、番茄时间与百五定律
  2. 作为程序员要多注意身体(华佗教你睡觉)
  3. Oracle数据库中的临时表
  4. FusionCharts在Java中的应用
  5. UGA5TBYB_E_USG.exe
  6. linux中安装redis报错
  7. ROS仿真笔记之——gazebo配置velodyne
  8. 陆奇演讲:2021不能错过的四大趋势
  9. 世事无常?还是......
  10. Python简单实现表白藏头诗