POJ 1286 【POLYA】
2024-09-22 02:41:59
题意:
给你三种颜色的珠子,每次给你N,问在旋转,翻转之后视作相同的情况下,能组成多少种不同的项链。
思路:
让我们借这道题拯救一下我对POLYA定理的理解...
sigma(m^(gcd(i,n)))
以上是在旋转的时候计数的和,其中m是颜色的数量,n是项链的长度。
一下考虑翻转的情况:
当n是偶数的时候,
有n/2种情况循环节的数量是n/2+1,有n/2种情况是n/2。
当n是奇数的时候,
有n种情况是循环节的数量是n/2+1
别忘了最后要除以循环节总的种类数!!!
坑点:
这题n可能等于0...
RE了一次...
#include<string.h>
#include<algorithm>
#include<stdio.h>
using namespace std;
long long quick_pow(long long a,long long b){
long long rel=;
while(b){
if(b&)rel*=a;
a=a*a;
b>>=;
}
return rel;
}
int gcd(int a,int b){
return b==?a:gcd(b,a%b);
}
int main()
{
int n;
scanf("%d",&n);
while(n>=){
if(n==){printf("0\n");scanf("%d",&n);continue;}
long long ans=;
for(int i=;i<=n;i++){
ans+=quick_pow(,gcd(n,i));
}
if(n&){
ans+=n*quick_pow(,n/+);
}
else{
ans+=n/*quick_pow(,n/+);
ans+=n/*quick_pow(,n/);
}
printf("%I64d\n",ans/n/);
scanf("%d",&n);
}
}
最新文章
- net TreeView 递归
- python 传递结构体指针到 c++ dll
- C/S打包(图文)
- 高效的Nginx
- 绿荫工作室爱选修app内测
- BOM 之 location
- BZOJ 1022 小约翰的游戏
- MATLAB制作符合IEEE标准的图插入Latex
- iOS tableView刷新
- [Swift]LeetCode58. 最后一个单词的长度 | Length of Last Word
- LeetCode算法题-Binary Tree Tilt(Java实现)
- 739. Daily Temperatures &;&; 单调栈 &;&; Python collections deque
- iptables 初见 第一章
- 清空visual studio 开发缓存
- Mysql 账号过期问题
- python知识合集
- SharePoint 2013 EventHanlder工具
- 12-5 张雨RTCM3数据解码解不出的原因
- makefile特殊符号介绍
- Carte作为Windows服务