标签:
【POJ 1286】Necklace of Beads(polya定理)
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 7550 | Accepted: 3145 |
Description

Input
Output
Sample Input
4 5 -1
Sample Output
21 39
Source
polya裸题,。教程翻烂了百度,全是那么一套……然而没太明白,请教QAQ巨稍微理解了点,。
题目说旋转和对称算同种,所以枚举所有旋转和对称步数,然后套公式……
代码如下:
#include <iostream>
#include <cmath>
#include <vector>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <queue>
#include <stack>
#include <list>
#include <algorithm>
#include <map>
#include <set>
#define LL long long
#define Pr pair<int,int>
#define fread() freopen("in.in","r",stdin)
#define fwrite() freopen("out.out","w",stdout)
using namespace std;
const int INF = 0x3f3f3f3f;
const int msz = 32768;
const int mod = 1e9+7;
const double eps = 1e-8;
int main()
{
int n;
LL ans;
while(~scanf("%d",&n) && n != -1)
{
if(!n)
{
puts("0");
continue;
}
ans = 0;
for(int i = 1; i <= n; ++i)
ans += pow(3.0,__gcd(n,i));
if(n&1) printf("%lld\n",(ans+(LL)pow(3.0,1+n/2)*n)/(n*2));
else printf("%lld\n",(ans+(LL)pow(3.0,n/2)*(n/2)+(LL)pow(3.0,2+(n-2)/2)*(n/2))/(2*n));
}
return 0;
}
【POJ 1286】Necklace of Beads(polya定理)
标签:
原文地址:http://blog.csdn.net/challengerrumble/article/details/51438519