問題一覧 > 通常問題

No.1426 Got a Covered OR

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 75
作問者 : 箱星 / テスター : nok0
12 ProblemId : 5286 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2022-04-25 23:58:40

ストーリー

古代ユキコ王国では長さ NN の正の整数列 A1,A2,,ANA_1,A_2,\ldots,A_N が神聖な数列として扱われていたと言い伝えられています。また、王国には石碑が NN 枚あり、ii 番目の石碑には A1 OR A2 OR  OR AiA_1 \ \mathrm{OR} \ A_2 \ \mathrm{OR} \ \cdots \ \mathrm{OR} \ A_i の値が刻まれていたと言い伝えられています。しかし王国の滅亡とともに、神聖な数列 A1,A2,,ANA_1,A_2,\ldots,A_N が何であったかという情報は失われてしまいました。

調査員の小星さんは NN 枚の石碑のうち一部を発見しました。ii 番目の石碑には値 BiB_i が刻まれていました。Bi=1B_i=-1 のとき、ii 番目の石碑が発見されなかったことを表します。BN1B_N\ne -1 (すなわち、NN 番目の石碑は発見されたこと) が保証されます。

小星さんは神聖な数列 A1,A2,,ANA_1,A_2,\ldots,A_N としてあり得るものが何通りあるかを求めようとしましたが、できませんでした。そこで、あなたに以下の問題を解くことを依頼しました。

問題文

次の条件をみたす正の整数列 A1,A2,,ANA_1,A_2,\ldots,A_N が何通りあるかを求めてください。

  • Bi1B_i\ne -1 をみたす i (i=1,2,,N)i \ (i=1,2,\ldots,N) に対し、BiB_iA1 OR A2 OR  OR AiA_1 \ \mathrm{OR} \ A_2 \ \mathrm{OR} \ \cdots \ \mathrm{OR} \ A_i と等しい。

ただし答えは非常に大きくなる場合があるので、109+710^9+7 で割った余りを求めてください。答えは有限であることが保証されます。

a OR ba \ \mathrm{OR} \ baabb のビットごとの論理和を表します。

入力

NN
B1B_1 B2B_2 \ldots BNB_N
  • 入力はすべて整数
  • 1N1051\le N\le 10^5
  • 1Bi<2301\le B_i\lt 2^{30} または Bi=1B_i=-1
  • BN1B_N\ne -1

出力

正の整数列 A1,A2,,ANA_1,A_2,\ldots,A_N としてあり得るものが何通りあるかを求めて、109+710^9+7 で割った余りを出力してください。

サンプル

サンプル1
入力
3
1 -1 3
出力
8

(A1,A2,A3)=(1,1,2),(1,1,3),(1,2,1),(1,2,2),(1,2,3),(1,3,1),(1,3,2),(1,3,3)(A_1,A_2,A_3)=(1,1,2),(1,1,3),(1,2,1),(1,2,2),(1,2,3),(1,3,1),(1,3,2),(1,3,3)88 通りです。

サンプル2
入力
5
5 -1 -1 -1 4
出力
0

存在しない場合もあります。

サンプル3
入力
7
-1 -1 -1 -1 -1 -1 7777777
出力
281468948

109+710^9+7 で割った余りを出力してください。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。