题目描述
使用循环冗余检验CRC计算帧检验序列FCS,并输出发送的帧。(CRC算法请参考谢希仁《计算机网络》第七版第3.1节)
输入描述
输入为两行。
第一行输入M位二进制,表示待发送的数据。(M<=100)
第二行输入R+1位二进制,表示生成多项式的系数。(R<=32)
输出描述
在一行中输出加上FCS后发送的帧。
输入样例
101001
1101
输出样例
101001001
AC代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 100+10;
char a[maxn],b[maxn];
int main()
{
scanf("%s %s",a,b);
int lena = strlen(a);
int lenb = strlen(b);
for(int i=0;i<lena;i++) printf("%c",a[i]);
for(int i=lena;i<lena+lenb-1;i++)
{
a[i]='0';
}
for(int i=0;i<lena+1;i++)
{
while(i<lena+1 && a[i]=='0') i++;
if(i>=lena+1) break;
for(int j=0;j<lenb;j++)
{
if(a[i+j]==b[j]) a[i+j]='0';
else a[i+j]='1';
}
}
for(int i=lena;i<lena+lenb-1;i++)
{
printf("%c",a[i]);
}
return 0;
}