//poj 1286
//sep9
#include<iostream>
using namespace std;
typedef __int64 INT;
INT pow3[32];
INT gcd(INT a,INT b)
{
return a%b==0?b:gcd(b,a%b);
}
int main()
{
pow3[0]=1;
for(INT i=1;i<24;++i)
pow3[i]=pow3[i-1]*3;
INT n;
while(scanf("%I64d",&n)==1&&n>=0){
if(n==0){
printf("0\n");
continue;
}
INT ans=n&1?n*pow3[n/2+1]:(n/2)*pow3[n/2]+(n/2)*pow3[n/2+1];
for(INT i=0;i<n;++i)
ans+=pow3[gcd(i,n)];
printf("%I64d\n",ans/(2*n));
}
return 0;
}
poj 1286 Necklace of Beads 项链旋转+对称群的polya计数

最新推荐文章于 2018-03-27 11:33:39 发布
