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