FZU 1078 计算循环冗余码【模拟】
1.协议事先约定一个二进制生成表达式,本题设为10011;
2.将待发送的二进制数据串的末尾加4个0;
3.将补上0的数据串按模2除法除于生成表达式,取余数;
4.该余数就是该二进制数据串的循环冗余码。
例如:
数据串为:1101011011
生成表达式为:10011
循环冗余码为:1110
计算过程如下:
根据上述的计算方法,请编写一个循环冗余码计算程序,假设二进制数据串的长度不超过20位,生成表达式固定为10011。
Input
Output
Sample Input
2
1101011011
10101010
Sample Output
01110
01001
【分析】:首先要了解循环冗余校验码是什么。
循环冗余校验码是通过除法运算来建立有效信息位和校验位之间的约定关系。假定,待编码的有效信息以多项式M(X)表示,将它左移若干位后,用另一个约定的多项式G(X)去除,所产生的余数就是校验位。有效信息位与校验位相拼接就构成了CRC码。当接收方收到发来的CRC码后,他仍用约定的多项式G(X)去除,若余数为0,表明该代码接收无误;若余数不为0,表明某一位出错,再进一步由余数值确定出错的位置,并予以纠正。
循环冗余校验码的编码方法:
循环冗余校验码由两部分组成,左边为信息位,右边为校验位。若信息位为N位,校验位为K位,则该校验码被称为(N+K,N)码。
这里,需介绍一下模2的运算规则。模2运算不考虑加法的进位和减法的借位,即0±0=0,0±1=1,1±0=1,1±1=0。作模2除法时,上商的原则是当部分余数首位是1时(即使被除数比除数小),商取1,反之商取0,然后按模2加减求得余数。当被除数逐步除完时,最终的余数比除数少一位,此余数就是校验位。
对“模2除法”进行说明:
“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。相当于二进制中的逻辑异或运算。
g(x)和h(x)的除运算,可以通过g和h做xor(异或)运算。二进制相除就是一个异或的过程。比如将11001与10101做xor运算:

明白了xor运算法则后,举一个例子使用CRC-8算法求101001110100001的效验码。CRC-8标准的h(x) = x^8 + x^7 + x^6 + x^4 + x^2 + 1,既h是9位的二进制串111010101。

经过迭代运算后,最终得到的r是10001100,这就是CRC效验码。
【代码】:明白原理后就是简单模拟。
#include <iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<streambuf>
#include<cmath>
#include<string>
using namespace std;
#define ll long long
#define oo 10000000 int n,m;
char b[]="";
int main()
{
string a;
int t;
scanf("%d",&t);
while(t--)
{
cin>>a;
a=a+"";
for(int i=;i<a.size()-;i++)
{
if(a[i]=='')
{
continue;
}
int p=i;
for(int j=;j<;j++,p++)
{
if(a[p]^b[j])
a[p]='';
else
a[p]='';
}
}
for(int i=a.size()-;i<a.size();i++)
printf("%c",a[i]);
printf("\n");
}
return ;
}
模拟
FZU 1078 计算循环冗余码【模拟】的更多相关文章
- uva 327 Evaluating Simple C Expressions 简易C表达式计算 stl模拟
由于没有括号,只有+,-,++,--,优先级简单,所以处理起来很简单. 题目要求计算表达式的值以及涉及到的变量的值. 我这题使用stl的string进行实现,随便进行练手,用string的erase删 ...
- FZU 1893 内存管理 模拟
比赛的时候队友要做这道题…… 他没做出来自己也被误导了…… 也算是个教训 自己还是要有自己的思路…… 又是模拟题…… 网上都是用vector做的 我最近才会stl 怎么会用那么高大上的的东西…… 强力 ...
- 全国绿色计算大赛 模拟赛第一阶段(C++)第1关:求和
挑战任务 这次“绿盟杯”大赛,小明作为参赛选手在练习的时候遇到一个问题,他要对一个范围的两个数进行数位的累加,例如有两个数 15,19 则 他们的数位和应该为:1+5+1+6+1+7+1+8+1+9, ...
- 承压计算:模拟+double
标题:承压计算 X星球的高科技实验室中整齐地堆放着某批珍贵金属原料. 每块金属原料的外形.尺寸完全一致,但重量不同.金属材料被严格地堆放成金字塔形. 7 ...
- hdu5387 钟表指针之间夹角(分数计算,模拟)
题意: 给你一个24格式的数字时间,(字符串),问你这个时刻时针与分针 时针与秒针 分针与秒针 之间的夹角, 我们发现 秒针每秒转6度,分针每秒转1/10度,每分转6度,时针每小时转30度,每分转1/ ...
- 全国绿色计算大赛 模拟赛第二阶段 (Python)
第1关气温预测 def dailyTemps(temp_list): result = [] for ca in range(0, len(temp_list)-1): for i in range( ...
- 全国绿色计算大赛 模拟赛第一阶段(Python)
第1关求和 class Task: def getSum(self, num1, num2): sum = 0 for i in range(num1, num2 + 1): while (i != ...
- [LeetCode] 数学计算模拟类问题:加法,除法和幂,注意越界问题。题 剑指Offer,Pow(x, n) ,Divide Two Integers
引言 数学计算的模拟类题目,往往是要求实现某种计算(比如两数相除),实现的过程中会有所限定,比如不允许乘法等等. 这类题目首先要注意计算过程中本身的特殊情况.比如求相除,则必须首先反映过来除数不能为0 ...
- 理工科应该的知道的C/C++数学计算库(转)
理工科应该的知道的C/C++数学计算库(转) 作为理工科学生,想必有限元分析.数值计算.三维建模.信号处理.性能分析.仿真分析...这些或多或少与我们常用的软件息息相关,假如有一天你只需要这些大型软件 ...
随机推荐
- nsfwjs鉴黄识别最小化案例
3个月前,也就是2月份左右吧,Github上出现一个开源项目: Infinite Red, Inc.工作室宣布开源旗下基于tensorflow的tfjs的鉴黄小工具 据说是从15000张图片中 进行机 ...
- 【Word Break II】cpp
题目: Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where e ...
- Python-S9-Day125-Web微信&爬虫框架之scrapy
01 今日内容概要 02 内容回顾:爬虫 03 内容回顾:网络和并发编程 04 Web微信之获取联系人列表 05 Web微信之发送消息 06 为什么request.POST拿不到数据 07 到底使用j ...
- Python-S9——Day83-ORM项目实战
01 上节回顾 02 后台管理布局 03 按钮权限控制的简单形式 04 修改表结构 05 重构数据结构 06 限制权限颗粒度 01 上节回顾 1.1 项目的组织架构: 1.2 项目组件的版本说明: 使 ...
- Uncaught TypeError: Cannot read property of undefined In JavaScript
当脚本遇到未初始化的变量或对象时,通常会抛出如上图所示的错误. Decription 'Undefined'是全局对象的属性.如果没有为变量赋值,则为'undefined'类型.当求值变量没有任何赋值 ...
- CentOS6.4编译Hadoop-2.4.0
因为搭建Hadoop环境的时候,所用的系统镜像是emi-centos-6.4-x86_64,是64位的,而hadoop是默认是32的安装包.这导致我们很多操作都会遇到这个问题(Java HotSp ...
- c++ primer plus 第6版 部分二 5- 8章
---恢复内容开始--- c++ primer plus 第6版 部分二 5- 章 第五章 计算机除了存储外 还可以对数据进行分析.合并.重组.抽取.修改.推断.合成.以及其他操作 1.for ...
- Python面向对象之私有方法(4)
类里面有很多成员修饰符,用来修饰各种属性 (1)私有属性,只有内部的方法可以访问 class Foo: xo = 'xo'#表明是公共的,内部外部都可以访问 __ox = '私有属性'#私有属性,只有 ...
- Selenium - WebDriver: Page Objects
This chapter is a tutorial introduction to page objects design pattern. A page object represents an ...
- 【转】UGUI VS NGUI
原文:http://gad.qq.com/college/articledetail/7191053 注[1]:该比较是基于15年-16年期间使用NGUI(3.8.0版本)与UGUI(4.6.9版本) ...