100 atcoder#ABC134D. [ABC134D] Preparing Boxes

[ABC134D] Preparing Boxes

题目描述

N N 個の空の箱が横一列に並んでいます。 左から i i  (1  i  N) \ (1\ \leq\ i\ \leq\ N) 番目の箱には整数 i i が書かれています。

すぬけさんは、それぞれの箱に対してボールを 1 1 個入れるか何も入れないかを選ぶことができます。

ここで、以下の条件を満たすようなボールの入れ方を、いいボールの入れ方と定めます。

  • 1 1 以上 N N 以下の任意の整数 i i について、i i の倍数が書かれた箱に入っているボールの個数の和を 2 2 で割った余りが ai a_i である。

いいボールの入れ方は存在するでしょうか。存在するならば 1 1 つ求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N a1 a_1 a2 a_2 ... aN a_N

输出格式

いいボールの入れ方が存在しないなら -1 を出力せよ。

存在するならば、そのような入れ方のうちの 1 1 つを以下の形式で出力せよ。

M M b1 b_1 b2 b_2 ... ... bM b_M

ここで M M はボールを入れる箱の個数を表し、b1, b2, ..., bM b_1,\ b_2,\ ...,\ b_M はボールを入れる箱に書かれた整数を任意の順番に並べたものである。

题目大意

给你一个序列 a ,构造一个数列 b ,(两个数列中的数均为0或1)满足以下条件:

对于位置 i i , 将所有是 i i 的倍数的下标的值相加,其和 mod mod 2 2 的结果为 ai ai

3
1 0 0
1
1
5
0 0 0 0 0
0

提示

制約

  • 入力は全て整数である。
  • 1  N  2 × 105 1\ \leq\ N\ \leq\ 2\ \times\ 10^5
  • ai a_i 0 0 または 1 1 である。

Sample Explanation 1

1 1 が書かれた箱だけにボールを入れることを考えます。 - 1 1 の倍数が書かれた箱は、1 1 が書かれた箱、2 2 が書かれた箱、3 3 が書かれた箱の 3 3 個です。これらの箱に入っているボールの個数の和は 1 1 です。 - 2 2 の倍数が書かれた箱は、2 2 が書かれた箱の 1 1 個だけです。これらの箱に入っているボールの個数の和は 0 0 です。 - 3 3 の倍数が書かれた箱は、3 3 が書かれた箱の 1 1 個だけです。これらの箱に入っているボールの個数の和は 0 0 です。 以上より、1 1 が書かれた箱だけにボールを入れるのは、与えられた条件を満たすいいボールの入れ方です。

Sample Explanation 2

ボールを 1 1 つも入れない入れ方が、いい入れ方になる場合もあります。