polay定理

来源:互联网 发布:mac 小红点 编辑:程序博客网 时间:2024/04/30 14:02
#include<stdio.h>#include<iostream>#include<algorithm>#include<math.h>using namespace std;int gcd(int a,int b){    while(b^=a^=b^=a%=b)        ;    return a;}void polya(int n,int m){    int s=0,i,j,p;    for(i=1;i<=n;i++)    {        s+=(int)pow((double)m,(double)gcd(n,i));    }    if(n&1)        s+=n*(int)pow((double)m,(double)(n+1)/2);    else    {        p=(int)pow((double)m,(double)n/2);        s+=n/2*p+n/2*p*m;    }
     s=s/n/2;    return ;}

0 0