3133. 串珠子
题目链接
3133. 串珠子
给定 种不同颜色的珠子,每种颜色的珠子的个数都足够多。
现在要从中挑选 个珠子,串成一个环形手链。
请问一共可以制作出多少种不同的手链。
注意,如果两个手链经旋转或翻转后能够完全重合在一起,对应位置的珠子颜色完全相同,则视为同一种手链。
输入格式
输入包含多组测试数据。
每组测试数据占一行,包含两个整数 。
最后一行包含 0 0
表示输入结束。
输出格式
每组数据输出一个占一行的整数表示结果。
数据范围
,
输入样例:
输出样例:
样例解释
当 时,一共可以制作出 种不同的手链,如下图。
解题思路
polya
burnside引理:设 和 为有限集合, 为一些从 到 的映射组成的集合。
是 上的置换群,且 中的映射在 中的置换作用下封闭。
表示 作用在 上产生的所有等价类的集合
(若 中的两个映射经过 中的置换作用后相等,则它们在同一等价类中),则
其中 表示集合 中元素的个数,且
burnside引理的直观理解:每种置换的不动点个数的平均值,即本质不同的方案数
polya定理:在与 Burnside 引理相同的前置条件下,若 为 所有从 到 的映射,内容修改为
其中 表示置换 能拆分成的不相交的循环置换的数量
polya定理即求每种置换的不动点个数,但是必须保证其拆分的循环置换不相交
本题有两种置换:旋转和翻转
对于旋转来说,方向没有影响,假设都顺时针旋转,对于每个点来说旋转可以每次旋转 次,每次旋转 ,设旋转 次后 回到原位置,即 ,解得 ,即每个轨迹的点数,对于 这个点来说每次旋转 次,跟 这个点的轨迹不会相交,且轨迹上的点数和 相等,即所有不相交的轨迹点数相等,总共有 条不相交的轨迹
对于翻转来说,如果 为奇数,讨论其对称轴,共有 个对称轴,即 个置换群,考虑经过轴上的那个点,每个置换群共有 个循环置换;如果 为偶数,对称轴细分为是否经过点,对于经过点的对称轴,其共有 个置换群,每个置换群有 个循环置换,对于不经过点的对称轴,其也有 个置换群。每个置换群有 个循环置换
故总的方案数为
- 时间复杂度:
代码
__EOF__

本文链接:https://www.cnblogs.com/zyyun/p/16798809.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!