解答

数を多項式としてみなすことを考えましょう。

具体的には、ある数XXを二進数表記をしたとき,kkビット目が立っている時にxkx^kを要素にもつような 全ての係数が{0,1}\{0, 1\}の多項式を対応させます。

たとえば、 13=23+22+113 = 2^3 + 2^2 + 1ですので13x3+x2+113 \rightarrow x^3 + x^2 + 1となります。

加えていくつかの定義をします。


はじめに、22つの整数係数多項式f(x),g(x)f(x), g(x)が全ての係数において偶奇が等しいとき これらは「互いに法を22として合同である」とし、「f(x)=g(x)(mod 2)f(x) = g(x) (mod\ 2)」とかくことにします。

たとえば、

f(x)=x4+x2+1,g(x)=19x4x2+101f(x) = x^4 + x^2 + 1, g(x) = 19x^4 -x^2 + 101

は互いに法を22として合同でf(x)=g(x)(mod 2)「f(x) = g(x) (mod\ 2)」です。

22つめに、多項式f(x),g(x)f(x), g(x)に対して、以下を満たす整数係数多項式q(x)q(x)が存在する場合、「f(x)f(x)g(x)g(x)で割り切れる/g(x)g(x)f(x)f(x)の因数である」ということにします。

f(x)=g(x)q(x)(mod 2)f(x) = g(x)q(x) (mod\ 2)

たとえば、

f(x)=x2+1,g(x)=x+1f(x) = x^2 + 1, g(x) = x + 1

としたとき

f(x)=x2+2x+1=g(x)g(x)(mod 2)f(x) = x^2 + 2x + 1 = g(x)g(x) (mod\ 2)ですので「f(x)f(x)g(x)g(x)で割り切れる/g(x)g(x)f(x)f(x)の因数」です。

ここで、AiA_iを上記の規則に従って多項式に対応させた結果得られる多項式をfi(x)f_i(x)とします。

33つめに、整数係数の多項式の集合をGGとし、GGに属する多項式のうち、以下を満たす(c1(x),...cn(x))(c_1(x), ... c_n(x))が存在する多項式h(x)h(x)の集合をHHとします。

h(x)=i=1nci(x)fi(x)(mod 2),ciG かつ全ての係数が0,1のいずれか・h(x) = \displaystyle \sum_{i = 1}^{n} {c_i(x)f_i(x)} (mod\ 2) , c_i \in G かつ全ての係数が{0, 1}のいずれか


明らかに、題意の操作を繰り返して得られる数を多項式に変換した時、それらはHHに含まれるものであることがわかります。

そして、全てのfi(x)f_i(x)を割り切る多項式のうち、全ての係数が{0,1}\{0, 1\}になるものが存在します。

これをPPとし、これが11以外に存在しないことが必要十分条件でもあります。(P(x)=1P(x) = 1が条件を満たすことは明らか。)

このようなPPを求めるには、多項式に対して通常の整数と同様にEuclidEuclidの互助法的な考え方をもちいて再帰的に計算を行えば良いです。

適切に実装を行えば、時間計算量O(N(logA)2)O(N(logA)^2)の回答を得ることができます。