QOJ.ac

QOJ

Límite de tiempo: 3 s Límite de memoria: 256 MB Puntuación total: 100

#7592. 隨機數

Estadísticas

露露、花花同萱萱最近對電腦入面嘅隨機數產生咗興趣。大家都知道,電腦產生嘅隨機數序列唔係真正嘅隨機數,而係按照一定規則產生嘅偽隨機數。

有一日,露露認識咗一種叫做 Mersenne twister 嘅隨機數產生方法。畀定初始參數 $m\in\mathbb Z^+$、$x\in\mathbb Z\cap[0,2^m)$ 同初值 $M_0\in\mathbb Z\cap[0,2^m)$,佢會用以下遞推式構造偽隨機數列 $\{M_n\}$:

$$ M_n=\begin{cases} 2M_{n-1},&2M_{n-1}<2^m,\\ (2M_{n-1}-2^m)\operatorname{xor}x,&2M_{n-1}\ge2^m. \end{cases} $$

其中 $\operatorname{xor}$ 係二進制異或運算,即 C/C++ 入面嘅 ^ 運算。如果揀嘅參數 $x$ 令呢個數列喺長度趨向無窮時,近似等機率噉喺 $\mathbb Z\cap(0,2^m)$ 入面取值,就稱 $x$ 為「好嘅」。例如,當 $m>1$ 時,$x=0$ 顯然唔係好嘅。

露露向朋友介紹咗 Mersenne twister 之後,花花想用一啲經典嘅隨機性測試,檢驗佢嘅隨機性強度。為咗咁,花花用電腦計算咗一啲 $M_k$。

但細心嘅萱萱留意到,花花有一次用二進制輸入 $k$ 嗰陣,喺尾多輸入咗 $l$ 個 0。佢正想話畀花花知呢個疏忽,但花花已經計算同記低咗錯誤嘅 $M_k$ 值,卻冇記低 $k$ 嘅值。雖然呢個其實唔係致命問題,但當萱萱話畀花花知呢個疏漏時,身為完美主義者嘅花花仍然懇求萱萱幫佢修正 $M_k$ 嘅值。萱萱就將呢個任務交咗畀佢嘅 AI——你。

輸入格式

輸入檔案 random.in 嘅第一行包含一個正整數 $m$,第二行係以二進制表示嘅 $x$,一共有 $m$ 個數,由低位到高位排列;第三行係以二進制表示嘅 $M_0$,排列方式同 $x$ 一樣;第四行包含一個整數 $type$。

之後分為兩種可能情況:

  1. $type=0$,即萱萱記低咗花花嘅輸入:第五行包含一個整數,表示萱萱記低嘅正確 $k$ 值。
  2. $type=1$,即萱萱未能記低花花嘅輸入:第五行係 $l$,第六行輸入花花計錯咗嘅、以二進制表示嘅 $M_k$。

輸出格式

輸出檔案 random.out 只有一行,係一個 $m$ 位嘅 01 字串,表示你求出嘅正確 $M_k$,同樣要由低位到高位排列。

樣例

輸入 1

10
1 1 1 0 0 1 1 1 0 0
1 1 1 0 0 0 0 0 1 1
0
100

輸出 1

0101111001

輸入 2

10
1 1 1 0 0 1 1 1 0 0
1 1 1 0 0 0 0 0 1 1
1
3
0 1 0 1 1 1 1 1 0 1

輸出 2

0101111001

樣例 3

請睇選手目錄入面嘅 random/random.in 同 random/random.ans。

資料範圍同約定

測試點編號 $m$ $k$ $l$ $type$ $x$ 係咪「好嘅」
1 $\le10$ $\le10^9$ 不適用 0 係
2 $\le10$ $\le10^9$ $\le10$ 1 係
3 $\le100$ $\le10^9$ 不適用 0 係
4 $\le100$ $\le10^9$ 不適用 0 係
5 $\le100$ $\le10^9$ 不適用 0 係
6 $\le100$ $\le10^5$ $=1$ 1 係
7 $\le100$ $\le10^9$ $\le10$ 1 係
8 $\le100$ $\le10^9$ $\le10$ 1 係
9 $\le100$ $\le10^9$ $\le10$ 1 係
10 $\le1000$ $\le10^{18}$ $\le10$ 1 係
11 $\le1000$ $\le10^{18}$ $\le10$ 1 係
12 $\le1000$ $\le10^{18}$ $\le10$ 1 係
13 $\le2000$ $\le10^9$ 不適用 0 係
14 $\le2000$ $\le10^9$ 不適用 0 係
15 $\le500000$ $\le10^6$ 不適用 0 唔係
16 $\le500000$ $\le10^6$ 不適用 0 唔係
17 $\le1000000$ $\le10^6$ 不適用 0 唔係
18 $\le1000000$ $\le10^6$ 不適用 0 唔係
19 $\le1000000$ $\le10^6$ 不適用 0 唔係
20 $\le1000000$ $\le10^6$ 不適用 0 唔係

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.