Coding Problem

[ HDU - 6515 ]

题目大意:给你一个字符串,每个字母的ASCII二级制颠倒过来组成一个01数组。
然后这个数组每六位组成一个数字的ASCII输出

一道模拟题,使用C++中的bitset类型会简单的很多

那么正好来学习一下bitset的用法:

bitset

此处参考了这份博客:https://www.cnblogs.com/magisk/p/8809922.html

bitset大概就是一个二进制数组,每个位置只占1bit,想一下状压dp?

bitset的原理大概是将很多数压成一个,从而节省空间和时间(暴力出奇迹)

构造

构造时可以直接指定大小,也可以使用string和字符串数组来进行构造
需要注意的是,在使用字符串构造时,字符串中只能包含01,否则会抛出异常

bitset<4> bitset1;  //无参构造,长度为4,默认每一位为0
bitset<8> bitset2(12);  //长度为8,二进制保存,前面用0补充string s = "100101";
bitset<10> bitset3(s);  //长度为10,前面用0补充
char s2[] = "10101";
bitset<13> bitset4(s2);  //长度为13,前面用0补充cout << bitset1 << endl;  //0000
cout << bitset2 << endl;  //00001100
cout << bitset3 << endl;  //0000100101
cout << bitset4 << endl;  //0000000010101

性质

它支持所有的位运算操作:^ & | >>

bitset的函数

bit.size()       返回大小(位数)
bit.count()     返回1的个数
bit.any()       返回是否有1
bit.none()      返回是否没有1
bit.set()       全都变成1
bit.set(p)      将第p + 1位变成1(bitset是从第0位开始的!)
bit.set(p, x)   将第p + 1位变成x
bit.reset()     全都变成0
bit.reset(p)    将第p + 1位变成0
bit.flip()      全都取反
bit.flip(p)     将第p + 1位取反
bit.to_ulong()  返回它转换为unsigned long的结果,如果超出范围则报错
bit.to_ullong() 返回它转换为unsigned long long的结果,如果超出范围则报错
bit.to_string() 返回它转换为string的结果

题解

需要注意的坑点是这道题不能有换行符,行尾有空格

代码如下

#include <bits/stdc++.h>
using namespace std;string change(char c)
{bitset<8> b((int)c);stringstream str;string s;str << b;str >> s;reverse(s.begin(), s.end());return s;
}int main(void)
{string s;cin >> s;for (int i = 0; i < s.size(); i+= 3) {string ts = change(s[i]) + change(s[i + 1]) + change(s[i + 2]);for (int j = 0; j < ts.size(); j+= 6) {bitset<6> B(ts, j, 6);printf("%d ", B);}}return 0;
}

bitset HDU6515 Coding Problem相关推荐

  1. Coding Problem 模拟

    Problem Description Here is the logic.I am the brother of mata Chuang.Mata chuang is the brother of ...

  2. 2019中山大学程序设计竞赛

    Problem A 题意:有一个长度为n的随机排列以及m个min.max操作.问最后一个操作的结果的期望 * n! 的结果. 题解: 枚举k,考虑计算结果 >= k 的排列有几个. 此时数字本质 ...

  3. 自学成才翁_作为一名自学成才的开发者从“我的旅程”中吸取的教训

    自学成才翁 The path of the self-taught developer is tough and filled with uncertainty. There is no straig ...

  4. 软件访问转向本地_我是如何从完整的初学者转向软件开发人员的,以及如何做到的...

    软件访问转向本地 by Madison Kanna 麦迪逊·卡纳(Madison Kanna) 我是如何从完整的初学者转向软件开发人员的,以及如何做到的 (How I went from comple ...

  5. 在给定总和K的二叉树中找到级别

    Description: 描述: The article describes how to find the level in a binary tree with given sum K? This ...

  6. 什么样的代码是好代码_什么是好代码?

    什么样的代码是好代码 编码最佳实践 (Coding Best-Practices) In the following section, I will introduce the topic at ha ...

  7. python 科学计算机_在这个免费的虚拟俱乐部中学习计算机科学和Python的基础知识

    python 科学计算机 Are you learning how to code in 2020? 您是否正在学习2020年编码? Or are you already working as a d ...

  8. 软件工程专业实习可以做什么_想要获得软件工程实习机会? 这里有一些想法可以帮助您...

    软件工程专业实习可以做什么 by Tatiana Doyle 塔蒂亚娜·道尔(Tatiana Doyle) 想要获得软件工程实习机会? 这里有一些想法可以帮助您. (Looking to land a ...

  9. 我为期一个月的GitHub的经验教训

    by JS 由JS 我为期一个月的GitHub的经验教训 (Lessons from my month-long GitHub commit streak) "I want to learn ...

最新文章

  1. 请注意更新TensorFlow 2.0的旧代码
  2. webstorm更改scss输出路径
  3. Java多线程知识点整理(线程池)
  4. python中内存管理机制一共分为多少层_python 内存管理机制
  5. 5.7 matlab数据插值与曲线拟合的比较
  6. imageNamed和imageWithContextOfFile的区别?哪个性能高
  7. 施一公:为什么要独立思考、为什么要尊重科学?
  8. 嵌入网站的挖矿代码——Webmine
  9. Vue整合nginx:(1)开发环境npm run dev下,通过nginx解决前后端分离造成的跨域问题
  10. 配置nginx作为下载站点
  11. Angr安装与使用之使用篇(十五)
  12. Qt 批量替换指定文本为目标文本
  13. yuki翻译器钩子_YUKI游戏翻译工具下载 YUKI GALGAME翻译器v0.14 最新版
  14. 实用前端可视化工具库
  15. 【CSS】浅谈 CSS 中常用的相对长度单位 em, rem
  16. Latex参考文献的代码
  17. 新闻网站项目静态页面--详情页
  18. Excel教程:这三个excel筛选技巧,你肯定没用过 -Excel入门
  19. java mqtt发布_使用kura或MQTT将消息发布到kapua
  20. 科普:网格屏是什么意思?LED网格屏怎么安装

热门文章

  1. 【剑指offer】顺时针打印矩阵
  2. 如何在使用新技术前评估其浏览器兼容性
  3. 【转】statfs获得硬盘使用情况 模拟linux命令 df
  4. linux+postfix+extmail+dovecot搭建邮件服务器
  5. JAVA条件表达式的陷阱
  6. 社会生活中常用的14条著名法则
  7. 以太坊,EOS和其他DApps的总数达到2,432,但没有大规模采用
  8. css 网格布局_我从CSS网格布局中学到的东西
  9. react 快速上手开发_React中测试驱动开发的快速指南
  10. ai css 线条粗细_如何训练AI将您的设计模型转换为HTML和CSS