Burnside定理。

可以用Euler函数优化。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#define LL __int64 using namespace std; LL Power(int a,int b){
LL ret=1; LL p=(LL)a;
while(b){
if(b&1) ret=ret*p;
p=p*p;
b>>=1;
}
return ret;
} LL Euler(int s){
LL ret=(LL)s;
int l=(int)sqrt(s*1.0);
for(int i=2;i<=l;i++){
if(s%i==0){
ret=ret-ret/(LL)i;
while(s%i==0)
s/=i;
}
}
if(s>1)
ret=ret-ret/s;
return ret;
} LL Burnside(int n){
LL res=0;
for(int i=1;i<=n;i++){
if(n%i==0)
res=res+Power(3,i)*Euler(n/i);
}
if(n&1){
res=res+n*Power(3,n/2+1);
}
else{
res=res+n/2*Power(3,n/2)+n/2*Power(3,n/2+1);
}
return res;
} int main(){
int n;
while(scanf("%d",&n)!=EOF){
if(n==-1) break;
if(n==0) printf("0\n");
else{
LL ans=Burnside(n);
ans=ans/2/n;
printf("%I64d\n",ans);
}
}
return 0;
}

  

最新文章

  1. java : 包装类 缓冲机制的使用(转载)
  2. JQuery学习之语法
  3. Java 使用 Redis | 菜鸟教程
  4. 【LeetCode】Binary Tree Level Order Traversal II
  5. JVM Davilk ART 简介 区别
  6. 学习hamcrest和mockito时的总结和demo
  7. css li 列表
  8. hdu 4465 Candy(二次项概率)
  9. Hibernate的CRUD
  10. SignalR2.0开发实例之——群发消息
  11. Python os.path模板函数
  12. ●BZOJ 4278 [ONTAK2015]Tasowanie
  13. CSS---选择器种类 | 层叠性权重
  14. Java中的break,continue关于标签的用法(转载)
  15. 利用excel模板,将数据填充到excel中
  16. xshell中alt+.不能用问题
  17. git用法-打补丁【转】
  18. 【抓包】【Charles】
  19. denyhost部署
  20. Python开发【数据结构】:排序练习

热门文章

  1. iOS绘图系统UIKit与Core Graphics
  2. 清除eclipse中的SVN账号信息
  3. SSH学习之中的一个 OpenSSH基本使用
  4. javascript——从「最被误解的语言」到「最流行的语言」
  5. UVALive 6663 Count the Regions 离散+bfs染色_(:зゝ∠)_
  6. Jmeter执行多条Mysql语句报错
  7. 移动端H5页面编辑器开发实战--原理结构篇
  8. Chosen:Select 选择框的华丽变身
  9. C# 3.0的新特性
  10. 什么是 Dropout