T73432 秘籍-反复立体 (Polya定理)

本文介绍了一道关于Polya计数法的应用题,通过对特定几何体的旋转同构进行分析,采用有效的计算方法,详细解析了不同轴线下的置换方案,并提供了完整的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模拟赛的时候一道优秀的PolyaPolyaPolya的题
反正我对群论一无所知。
具体题面可以在洛谷团队硫代硫酸钠纠察大队找到2333

首先题目描述的这个几何体是阿基米德多面体之一,拥有666个正方形,888个正三角形
形如
在这里插入图片描述
看到旋转同构,能想到PolyaPolyaPolya

一开始用一些奇奇怪怪的方法去计算,然后一直自闭。

后来换了一种比较好用的方法。

我们通过确定轴线,来数旋转会比较容易
首先来考虑不动置换,也就是旋转0°0°0°

方案数就是a6+b8a^6 + b^8a6+b8

接下来考虑面心和面心的连线为轴
如果是正方形面,那么方案数就是
(qsm(lyf,2)+lyf+lyf)∗3∗a∗a (qsm(lyf,2)+lyf+lyf)*3*a*a(qsm(lyf,2)+lyf+lyf)3aa
其中lyf=a∗b∗blyf = a*b*blyf=abb

表示周围的剩下的图形可以看做四个完全相同的由一个正方形和两个三角形构成的图形,那么转化成平面n个环染色问题。而上下两个面的染色是独立的随便染,所以再乘a2a^2a2

那么以三角形为面的想法想法也是类似,这里不解释了

那么我们发现,还有一种轴线,是以顶点和其相对的顶点连线构成的。
比较容易发现绕着这样的线旋转的画
两边分成了两个部分,显然这两个部分只能形成一种置换,而顶点对有6对
所以

int uu = qsm(a,3)*qsm(b,4)%mod;
   sum=(sum+uu*6%mod)%mod;

大概就是这样了
直接给出所有的代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<vector>
#include<map>
#include<set>
#include<cstdlib>
#define ll long long
#define pb push_back
#define mk make_pair
#define lson ch[x][0]
#define rson ch[x][1]
#define int long long

using namespace std;

inline int read()
{
   int x=0,f=1;char ch=getchar();
   while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
   while (isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
   return x*f;
}

const int mod = 1e9+7;

int qsm(int i,int j)
{
   int ans=1;
   while (j)
   {
   	if (j&1) ans=ans*i%mod;
   	i=i*i%mod;
   	j>>=1;
   }
   return ans;
}

int a,b;

signed main()
{
  freopen("a.in","r",stdin);
  freopen("a.out","w",stdout);
  a=read(),b=read();
  int sum=0;
  int ymh = a*b%mod;
  int lyf = a*b%mod*b%mod;
  sum=(sum+qsm(a,6)*qsm(b,8)%mod)%mod;
  //cout<<sum<<endl;
  sum=(sum+(qsm(lyf,2)+lyf+lyf)%mod*3%mod*a%mod*a%mod)%mod;
  sum=(sum+(ymh*ymh%mod+ymh*ymh%mod)%mod*b%mod*b%mod*4%mod)%mod;
  int uu = qsm(a,3)*qsm(b,4)%mod;
  sum=(sum+uu*6%mod)%mod;
  cout<<sum*qsm(24,mod-2)%mod<<endl;
  return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值