有神犇来康一下吗,蒟蒻在线求助

P1319 压缩技术

Habseligkeit @ 2022-01-19 14:42:57


#include<bits/stdc++.h>
using namespace std;
int n,x,a[200020],num;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>x;
        if(i%2==0){
            for(int j=num+1;j<=num+x;j++)
                a[j]=1;
        }
        num+=x;
    }
    for(int i=1;i<=n*n;i++){
        if(i%7==0){
            cout<<a[i]<<endl;
            continue;
        }
        cout<<a[i];
    }
}

by Novice233 @ 2022-01-19 14:46:36

@PluckDuck


by IaLWH @ 2022-01-19 14:47:17

@Novice233 什么事


by Novice233 @ 2022-01-19 14:48:14

@PluckDuck 您那么强 来解答一下吧


by IaLWH @ 2022-01-19 14:48:57

@Novice233 您那么强 来解答一下吧


by IaLWH @ 2022-01-19 14:50:00

@Novice233 好好学习,天天向上


by IaLWH @ 2022-01-19 14:51:03

@Novice233 我知道你是在为楼主好


by Novice233 @ 2022-01-19 14:57:07

@未来的大犇 算了 我来回答一下吧 n之后的数字个数并不一定是n个


by coldy_rainy @ 2022-01-19 15:06:46

@未来的大犇

改进代码如下

#include<bits/stdc++.h>
using namespace std;
int n,x,a[200020],num;
int main(){
    cin>>n;
    for(int i=1;num!=n*n;i++){
        cin>>x;
        if(i%2==0){
            for(int j=num+1;j<=num+x;j++)
                a[j]=1;
        }
        num+=x;
    }
    for(int i=1;i<=n*n;i++){
        if(i%n==0){
            cout<<a[i]<<endl;
            continue;
        }
        cout<<a[i];
    }
}

by coldy_rainy @ 2022-01-19 15:11:52

@未来的大犇

你错是错在这里:

【1】

n不一定是7,因此这行代码:

if(i%7==0)

应该改成

if(i%n==0)

【2】

循环条件:

for(int i=1;i<=n;i++)

错误❌

仔细看看样例,n后面跟的数的个数不一定是n,

因此你的循环条件错了,应该为:

for(int i=1;num!=n*n;i++)

当长度不是等于n*n时停止读入,不然就WA了

亲测AC


by IaLWH @ 2022-01-19 15:12:51

Orz


| 下一页