luogu 3923 大學數學題

2022-05-23 21:06:10 字數 2899 閱讀 8688

構造乙個\(n\)元有限域,若不存在輸出-1,否則域中元素分別用\(0, 1, 2, \ldots, n - 1\)表示,輸出加法表和乘法表。

\(n \leq 343\)。

你我真的會域擴張嗎?答:不會

首先,根據一些基礎知識,有解當且僅當\(n = p ^ d\),其中\(p \in \mathbb\)。

其次,根據域擴張的知識,我們要構造的\(\text(p ^ d)\)一定是由素域\(\text(p)\)有限擴張而來的。

考察在\(\text(p)\)下的代數擴張,即假設存在乙個\(\text(p)[[x]]\)下的不可約多項式\(f(x)\),設\(\zeta\)是這個多項式的乙個根,那麼\(\text(p ^ d)\)中的所有元素可以唯一表示成乙個多項式

\[a_0 + a_1 \zeta + a_2 ^ 2 + \ldots + a_ ^ \ (a_i \in \text(p))

\](實際上是基\(1, \zeta, ^ 2, \ldots, ^ \)的線性組合)

假設我們最後要輸出的是這些多項式的加法表和乘法表,那麼問題就轉化為了找到乙個合適的加法運算和乘法運算。

加法就是在域\(\text(p)[[x]]\)下的多項式加法,乘法就是在域\(\text(p)[[x]]\)下的多項式乘法。

但是多項式乘法會導致使用的基的大小變大,我們需要把基的大小縮到\(d\)。

考慮可以應用線性組合\(f(\zeta) = 0\)。

對於乙個多項式,加上或減去\(k\)倍的\(f(\zeta)\)(\(k \in \text(p)[[x]]\)),代入\(\zeta\)求值不變。

那麼對於乙個多項式,如果次數超過了\(d - 1\),可以將它對\(f(\zeta)\)取模,得到的結果是乙個次數小於等於\(d - 1\)的多項式(即基的大小縮到了\(d\)),並且代入\(\zeta\)後值和原多項式值相等。

現在考慮的是我們輸出的是乙個數表而不是多項式表,考慮到要把多項式\(f\)對映到數\(f\),並且要求這個對映可逆。

如果有辦法可以把\(\zeta\)搞出來,那麼當然可以直接將\(f\)對映到\(f(\zeta)\)上,這是個同構對映,顯然可逆。

但是求\(\zeta\)是不現實的,我們退而求其次,找乙個要求不太高的可逆對映即可,比如把多項式\(f\)的係數看做數\(f\)在\(p\)進製下每一位的值,可以驗證這是可行的。

複雜度\(\mathcal o(n ^ 2 ^ 2 n)\)。

#include using namespace std;

typedef vector poly;

const int n = 360, m = 10;

const int r[7][8] = , // 2, 4, 8, 16, 32, 64, 128, 256

, // 3, 9, 27, 81, 243

, // 5, 25, 125

, // 7, 49, 343

, // 11, 121

, // 13, 169

, // 17, 289

};int n, id[n], vis[n]; vector pr;

void sieve ()

} }}namespace gf

elem compress (const poly &r)

return *this;

} poly expand (elem e)

return r;

} elem operator + (const elem &o)

return compress(f);

} elem operator * (const elem &o)

}for (int i = (d - 1) << 1; i > d - 1; --i)

}return compress(h);

} } ;

void get_poly ()

}} using namespace gf;

int main ()

} if (n == 1) else

} for (int i = 0; i < n; ++i)

} }return 0;}/*

4 : x ^ 2 + x + 1 (111)2 = 7

8 : x ^ 3 + x + 1 (1011)2 = 11

9 : x ^ 2 + 1 (101)3 = 10

25 : x ^ 2 + 2 (102)5 = 27

27 : x ^ 3 + 2x + 1 (1021)3 = 34

81 : x ^ 4 + x + 2 (10012)3 = 86

121: x ^ 2 + 1 (101)11 = 122

125: x ^ 3 + x + 1 (1011)5 = 131

169: x ^ 2 + 2 (102)13 = 171

128: x ^ 7 + x + 1 (10000011)2 = 131

243: x ^ 5 + 2x + 1 (1000021)3 = 250

256: x ^ 8 + x ^ 4 + x ^ 3 + x + 1 (100011011)2 = 283

343: x ^ 3 + 2 (1002)7 = 345

*/

2016 大學老友小聚

在閒暇之餘,約上兩三好友,暢聊著各自對生活和工作上的感悟,大概是世界上最幸福的事情之一吧。這次端午小假,與3位大學好友聚在一起,促膝長談。頓時感覺回到了大學時光,一切是那麼的舒服。工作幾年,各自都有了自己的家庭和朋友圈子,要擠出時間,湊在一起,居然變得如此困難。我們一起回憶著青春,聊著其他幾位同學的...

2016大學裡的流年回憶

入大學之前,由於沉迷遊戲,而選擇計算機專業,意在自己也想做出乙個吊炸天的網遊,我相信大部分師弟和師妹都是這麼過來的。來到大學,對it一無所知,只是抱著自己能做出遊戲的心態開始了大學的上課之旅。每天準時上課準時下課,每天按時完成作業,心情甚是開心。大一第一學期的課程 思修 高數 電子電路 英語 c語言...

頂點計畫1 3 大學戀愛調研

我是頂點計畫1 3小組小組成員 我們小組的調研話題為 我眼中的大學戀愛 調研原因及目的 觀察到現實中有很多人跟異 流很少 尤其是男生 卻有一大部分人幻想甜甜的戀愛。調查形式 線上調查,採取問卷形式。第一次調研 對於那些在戀愛中的同學祝他們999嗷!看得出來很多男生女生都有心目中的傾慕物件,但他們中的...