浅谈群论
群指qq群,U群,L群,LG群等
一下大量内容参考神仙yyc的blog#
群论概念和基本性质#
一些定义:#
代数系统: 由若干元素组成的集合,在上面定义 一元/二元…运算,要求运算必须是封闭的.
群: 由若干元素组成的集合,在上面定义二元运算*,满足 封闭性 结合律 存在单位元 存在逆元,则称G在*运算下是个群(运算一般叫乘法)
置换群: 由若干个置换组成的群,定义乘法为先做前一个置换,再做后一个置换。显然成群。这里记作
G
G
G
元素集: 置换用的元素集合。
等价类: 是一个由元素构成的集合,元素之间可以通过置换互相得到。 一般在题目中就是一堆本质相同的方案,题目要求的也是等价类的个数。元素
k
k
k的等价类写作
E
k
E_k
Ek.
E
k
⊆
Ω
E_k ⊆ Ω
Ek⊆Ω
不动置换类: 所有无法移动元素
k
k
k的置换组成的集合。
k
k
k就是这些置换的不动点。 令元素
k
k
k的不动置换类为
Z
k
Z_k
Zk, 显然
Z
k
⊆
G
Z_k ⊆ G
Zk⊆G,也可以证明
Z
k
Z_k
Zk自己也是个群,即
Z
k
Z_k
Zk是
G
G
G的一个子群。
不动点: 置换
p
p
p下不动点的个数记作
c
(
p
)
c(p)
c(p)
一些性质&引理#
当
x
,
y
属
于
同
一
个
等
价
类
时
,
∣
Z
x
∣
=
∣
Z
y
∣
当x,y属于同一个等价类时,|Z_x|=|Z_y|
当x,y属于同一个等价类时,∣Zx∣=∣Zy∣
这个显然吧
轨道-稳定化子定理:
∣
E
k
∣
∣
Z
k
∣
=
∣
G
∣
\large |E_k||Z_k|=|G|
∣Ek∣∣Zk∣=∣G∣
证明直接搬神仙yyc的了,网上大多都是这么证的
Burnside引理#
等
价
类
个
数
l
=
1
∣
G
∣
∑
c
(
p
i
)
\large 等价类个数 \ l=\frac{1}{|G|}\sum c(p_i)
等价类个数 l=∣G∣1∑c(pi)
人
话
:
等
价
类
个
数
=
每
个
值
换
下
不
动
点
个
数
的
和
的
平
均
数
人话:等价类个数=每个值换下不动点个数的和的平均数
人话:等价类个数=每个值换下不动点个数的和的平均数
证明:
看神仙yyc的blog吧
Pólya定理#
但是一般题目不动点个数并不是那么好求,可以考虑每个置换的轮换环数,每个轮换环的颜色必须相等,所以
等
价
类
个
数
l
=
1
∣
G
∣
∑
m
c
1
(
p
i
)
,
c
1
(
p
i
)
表
示
p
i
置
换
的
轮
换
环
数
\large 等价类个数 \ l=\frac{1}{|G|}\sum m^{c1(p_i)},c1(p_i)表示p_i置换的轮换环数
等价类个数 l=∣G∣1∑mc1(pi),c1(pi)表示pi置换的轮换环数
然后就莫得了
直接套式子, 发现置换环的个数是
n
n
/
g
c
d
(
n
,
i
)
n^{n/gcd(n,i)}
nn/gcd(n,i)个,
a
n
s
=
∑
i
=
0
n
n
n
/
g
c
d
(
n
,
i
)
=
∑
i
=
0
n
n
g
c
d
(
n
,
i
)
ans = \sum\limits_{i=0}^{n} n^{n/gcd(n,i)}=\sum\limits_{i=0}^{n} n^{gcd(n,i)}
ans=i=0∑nnn/gcd(n,i)=i=0∑nngcd(n,i)
// luogu-judger-enable-o2
#include<bits/stdc++.h>
#define mod 1000000007
#define ll long long
using namespace std;
ll qpow(ll x, ll y){
ll ret = 1;
for(;y; y >>= 1, x = x * x % mod) if(y & 1) ret = ret * x % mod;
return ret;
}
ll phi(int x){
ll ret = x;
for(int i = 2; i * i <= x; i ++) if(x % i == 0){
ret = ret / i * (i - 1);
while(x % i == 0) x /= i;
}
if(x > 1) ret = ret / x * (x - 1);
return ret;
}
int n, t;
int main(){
scanf("%d", &t);
while(t --){
scanf("%d", &n);
ll ans = 0;
for(int i = 1; i * i <= n; i ++) if(n % i == 0){
if(i * i != n) ans += qpow(n, n / i) * phi(i) % mod;
ans += qpow(n, i) * phi(n / i) % mod;
ans %= mod;
}
printf("%lld\n", ans * qpow(n, mod - 2) % mod);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!