BUPT复试专题—寻找变化前01序列(2016)

题目描述

给你一个01序列,HDLC协议处理的话,如果出现连续的5个1会补1个0。例如1111110,会变成11111010。

现在给你一个经过HDLC处理后的01序列,你需要找到HDLC处理之前的01序列。

例如给你11111010

你需要输出1111110

输入

输入正整数N,表示N例测试。接着输入N组数据,每组输入经过HDLC处理过的01序列(长度小于100)。

输出

对每组输入数据,输出HDLC处理前的01序列。

样例输入

2
11111010
1111100

样例输出

1111110
111110

来源

2016机考B题 

#include<iostream>
#include<cstring>
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<cstdio>
#define maxn 105
using namespace std;
 
char a[maxn];
 
int main()
{
 
    int tes,len;
    int i;
    while(cin>>tes)
    {
        while(tes--)
        {
            cin>>a;
            len=strlen(a);
 
            int cnt=0;
            for(i=0; i<len; i++)
            {
                if(a[i]=='1')
                {
                    cout<<a[i];
                    cnt++;
                    if(cnt==5) 
                    {
                        i++;
                        cnt=0;
                    }
                }
                else 
                {
                    cout<<a[i];
                    cnt=0;
                }
            }
            cout<<endl;
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/dzzy/p/8484668.html