这题的时间卡的。。。。

必须用欧拉来优化,而且要加素数表。最重要是,因为最后结果要/n,而数据很大,所以,必须在之前就先/n了,否则会爆数据。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#define LL __int64
using namespace std; int fact[1000],fp;
bool isprime[35000];
int prime[35000],np; void getprime(){
np=0;
memset(isprime,true,sizeof(isprime));
for(int i=2;i<35000;i++){
if(isprime[i]){
prime[np++]=i;
for(int j=i*i;j<35000;j+=i)
isprime[j]=false;
}
}
} int Power(int a,int b,int m){
int ans=1;
a=a%m;
while(b){
if(b&1) ans=(ans*a)%m;
a=(a*a)%m;
b=b>>1;
}
return ans;
} int Euler(int s){
int res=s;
for(int i=0;i<np&&prime[i]*prime[i]<=s;i++){
if(s%prime[i]==0){
res=res-res/prime[i];
while(s%prime[i]==0)
s=s/prime[i];
}
}
if(s>1)
res=res-res/s;
return res;
} void Burnside(int n,int p){
fp=0;
for(int i=1;i*i<=n;i++){
if(n%i==0){
fact[fp++]=i;
if(n/i!=i)
fact[fp++]=n/i;
}
}
int ans=0;
for(int i=0;i<fp;i++){
ans=(ans+Power(n,fact[i]-1,p)*((Euler(n/fact[i]))%p))%p; //此处是fact[i]-1表明 除以n,这是因为为了MOD P
}
ans%=p;
printf("%d\n",ans);
} int main(){
getprime();
int T,n,p;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&p);
Burnside(n,p);
}
return 0;
}

  

POJ 2154的更多相关文章

  1. 【POJ 2154】Color

    http://poj.org/problem?id=2154 还是先套上Burnside引理:\[\begin{aligned} ans & =\sum_{i=1}^n n^{(i,n)-1} ...

  2. poj 2154 Color——带优化的置换

    题目:http://poj.org/problem?id=2154 置换的第二道题! 需要优化!式子是ans=∑n^gcd(i,n)/n (i∈1~n),可以枚举gcd=g,则有phi( n/g )个 ...

  3. poj 2154 Color < 组合数学+数论>

    链接:http://poj.org/problem?id=2154 题意:给出两个整数 N 和 P,表示 N 个珠子,N种颜色,要求不同的项链数, 结果 %p ~ 思路: 利用polya定理解~定理内 ...

  4. poj 2154 Color(polya计数 + 欧拉函数优化)

    http://poj.org/problem?id=2154 大致题意:由n个珠子,n种颜色,组成一个项链.要求不同的项链数目.旋转后一样的属于同一种.结果模p. n个珠子应该有n种旋转置换.每种置换 ...

  5. 组合数学 - 波利亚定理 --- poj : 2154 Color

    Color Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7873   Accepted: 2565 Description ...

  6. [ACM] POJ 2154 Color (Polya计数优化,欧拉函数)

    Color Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7630   Accepted: 2507 Description ...

  7. POJ 2154 【POLYA】【欧拉】

    前记: TM终于决定以后干啥了.这几天睡的有点多.困饿交加之间喝了好多水.可能是灌脑了. 切记两件事: 1.安心当单身狗 2.顺心码代码 题意: 给你N种颜色的珠子,串一串长度问N的项链,要求旋转之后 ...

  8. poj 2154 Color

    这是道标准的数论优化的polya题.卡时卡的很紧,需要用int才能过.程序中一定要注意控制不爆int!!!我因为爆intWA了好久=_=…… 题目简洁明了,就是求 sigma n^gcd(i,n):但 ...

  9. POJ 2154 Color [Polya 数论]

    和上题一样,只考虑旋转等价,只不过颜色和珠子$1e9$ 一样的式子 $\sum\limits_{i=1}^n m^{gcd(i,n)}$ 然后按$gcd$分类,枚举$n$的约数 如果这个也化不出来我莫 ...

  10. POJ 2154 color (polya + 欧拉优化)

    Beads of N colors are connected together into a circular necklace of N beads (N<=1000000000). You ...

随机推荐

  1. 机房工程-在线式、后备式UPS选择(转载)

    原文网址:http://oa.yesky.com/10/31061510all.shtml#p31061510 1后备式UPS还是在线式UPS? 作为机房设备的一项重要保护措施,UPS起着无可替代的作 ...

  2. 经验之谈—OAuth授权流程图

    事实上我们在开发中,常常须要解决获得用户的一些特定的数据,比方:能够选择使用微博登陆.使用QQ登陆等等.然后我们间接的获得用户的头像.昵称等信息.这些都涉及到OAuth授权的内容 OAuth授权有这么 ...

  3. linux:共享内存

    #include <sys/ipc.h> #include <sys/shm.h> #include <string.h> #include <stdio.h ...

  4. Bash脚本中的操作符

    一.文件測试操作符 假设以下的条件成立将会返回真. -e 文件存在 -a 文件存在 这个选项的效果与-e同样. 可是它已经被"弃用"了, 而且不鼓舞使用. -f 表示这个文件是一个 ...

  5. jQuery插件 -- Cookie插件

    Cookie是站点设计者放置在client的小文本文件.Cookie能为用户提供非常多的使得,比如购物站点存储用户以前浏览过的产品列表.或者门户站点记住用户喜欢选择浏览哪类新闻. 在用户同意的情况下. ...

  6. Project Euler:Problem 37 Truncatable primes

    The number 3797 has an interesting property. Being prime itself, it is possible to continuously remo ...

  7. 0x16 Trie

    这章刷的真带劲 嘿嘿 裸题 #include<cstdio> #include<iostream> #include<cstring> #include<cs ...

  8. 【刷题笔记】LeetCode 606. Construct String from Binary Tree

    题意 给一棵二叉树,把它转化为字符串返回.转化字符串的要求如下: 1.  null 直接转化为  () ;(这个要求其实有点误导人~) 2. 子节点用 () 包裹起来:(这是我自己根据例子添加的要求) ...

  9. Spark的数据存储(十九)

    Spark本身是基于内存计算的架构,数据的存储也主要分为内存和磁盘两个路径.Spark本身则根据存储位置.是否可序列化和副本数目这几个要素将数据存储分为多种存储级别.此外还可选择使用Tachyon来管 ...

  10. 未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"提供程序的解决方法

    以下代码,打断点出现报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 DataSet ds=new DataSet(); try { string strCon = ...