| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 6547 | Accepted: 2734 |
Description

Input
Output
Sample Input
4 5 -1
Sample Output
21 39
Source
和http://blog.csdn.net/sr_19930829/article/details/38108871几乎是一模一样的。考虑n=0的情况,要不然runtime error- - !
代码:
#include <iostream>
#define LL long long
using namespace std;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
LL power(LL p,LL n)
{
LL sum=1;
while(n)
{
if(n&1)
sum*=p;
p*=p;
n/=2;
}
return sum;
}
int main()
{
int n;
while(cin>>n&&n!=-1)
{
if(n==0)//考虑n等于0的情况。。
{
cout<<0<<endl;
continue;
}
LL ans=0;
for(int i=1;i<=n;i++)
ans+=power(3,gcd(i,n));
if(n&1)
ans+=n*power(3,n/2+1);
else
ans+=(power(3,n/2+1)+power(3,n/2))*(n/2);
ans/=n*2;
cout<<ans<<endl;
}
return 0;
}
[ACM] POJ 1286 Necklace of Beads (Polya计数,直接套公式),布布扣,bubuko.com
[ACM] POJ 1286 Necklace of Beads (Polya计数,直接套公式)
原文地址:http://blog.csdn.net/sr_19930829/article/details/38109823