题解:P1319 压缩技术

· · 题解

本题主要考察对字符串的运用和模拟思想。

题目解法

首先,因为数据没有明确给出会输入多少个数,所以我们可以用以下代码进行读入。

while(scanf("%d",&a)!=EOF)

这句代码就是一直读入一个数字 a,如果输入EOF就结束,通常用于不知道确切读入数量的读入。
接下来,我们就要模拟输出,不难发现,我们可以按照 a 的数值来进行输出,用一个变量 flag 来记录应输出 \texttt 0 还是 \texttt 1,连续输出 aflag,再用一个变量 cnt 来计数,每输出一次就加一,当 cnt 能够整除 N 时,我们就换行。
以下是我的代码。

#include<bits/stdc++.h>
using namespace std;
signed main(){
    int n,a,cnt=0,flag=0;cin>>n;
    while(scanf("%d",&a)!=EOF){//读入 
        for(int i=1;i<=a;++i){//连续输出a次 
            cout<<flag;//输出0或者1 
            cnt++;//计数 
            if(cnt%n==0)cout<<endl;//能整除就换行 
        }
        flag=!flag;//!是取反符号,如果flag为0,就变为1,如果是1,就变为0。 
    }
    return 0;
}