前记:

TM终于决定以后干啥了。这几天睡的有点多。困饿交加之间喝了好多水。可能是灌脑了。

切记两件事:

1.安心当单身狗

2.顺心码代码

题意:

给你N种颜色的珠子,串一串长度问N的项链,要求旋转之后重合的算是同一种项链。问一共有多少中可能。结果模p。

1 <= N <= 1000000000, 1 <= P <= 30000

思路:

首先是我们的POLYA定理,给定的公式是这样的sigma(N^gcd(N,i))/N   i从0到N-1.

然后是优化的问题。因为如果我们枚举i累加一定会超时。

这道题考虑的是gcd(N,i)的种类是有限的。我们只要求出每种gcd有多少个就可以了。

考虑N=X*GCD I=Y*GCD

由此我们知道gcd(x,y)一定是1.

所以考虑枚举x,GCD的个数应该是x的欧拉。

坑点:

春困。TM变量总是写错。这道题的减一来源于提前把N给除掉了【这个N经常容易被人忽略】

#include<iostream>
#include<math.h>
#include<string.h>
#include<stdio.h>
using namespace std;
int prime[];//0代表是素数
int tmp[];//素数的序列
int part[];//将t分解
int num[];//每个质因数的分解数量
int jilu[];//dfs记录某个质因数用了几个
long long ans,t,p;//t是N,p是p
int partn;//记录一共分解成了几种素数
void fprime()//筛法打表
{
int atmp=,j;
for(int i=;i<;i++)
{
if(!prime[i])
{
tmp[atmp++]=i;
}
for(j=;j<atmp;j++)
{
if(i*tmp[j]>=)
break;
prime[i*tmp[j]]=;
if(i%tmp[j]==)
break;
}
}
}
void depart(int t){
int sq=sqrt(t)+;
for(int i=;tmp[i]<=sq;i++){
if(t%tmp[i]==){
part[partn]=tmp[i];
while(t%tmp[i]==){
num[partn]++;
t/=tmp[i];
}
partn++;
}
}
if(t>){
part[partn]=t;
num[partn]=;
partn++;
}
}
void init(){
memset(num,,sizeof(num));
partn=;
ans=;
}
long long quick_pow(long long a,long long b){
long long rel=;
while(b){
if(b&){
rel*=a;
rel%=p;
}
a*=a;
a%=p;
b>>=;
}
return rel;
}
long long oula(){
long long rel=;
for(int i=;i<=partn;i++){
if(jilu[i]){
rel*=(part[i]-)*quick_pow(part[i],jilu[i]-);
rel%=p;
}
}
return rel;
}
void dfs(int pos,long long nnum){
if(pos>partn){
long long a=oula();
long long b=quick_pow(t,t/nnum-);
ans+=(a%p)*(b%p)%p;
ans%=p;
return;
}
long long ttt=;
for(int i=;i<=num[pos];i++){
jilu[pos]=i;
dfs(pos+,nnum*ttt);
ttt*=part[pos];
}
}
int main()
{
fprime();
int n;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%I64d%I64d",&t,&p);
init();
depart(t);
partn--;
dfs(,);
printf("%I64d\n",ans);
}
}

POJ 2154 【POLYA】【欧拉】的更多相关文章

  1. poj 2154 Color 欧拉函数优化的ploya计数

    枚举位移肯定超时,对于一个位移i.我们须要的是它的循环个数,也就是gcd(i,n),gcd(i,n)个数肯定不会非常多,由于等价于n的约数的个数. 所以我们枚举n的约数.对于一个约数k,也就是循环个数 ...

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

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

  3. 欧拉函数 &【POJ 2478】欧拉筛法

    通式: $\phi(x)=x(1-\frac{1}{p_1})(1-\frac{1}{p_2})(1-\frac{1}{p_3}) \cdots (1-\frac{1}{p_n})$ 若n是质数p的k ...

  4. POJ 2480 (约数+欧拉函数)

    题目链接: http://poj.org/problem?id=2480 题目大意:求Σgcd(i,n). 解题思路: 如果i与n互质,gcd(i,n)=1,且总和=欧拉函数phi(n). 如果i与n ...

  5. Poj 2478-Farey Sequence 欧拉函数,素数,线性筛

    Farey Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14291   Accepted: 5647 D ...

  6. POJ 2407 Relatives(欧拉函数)

    题目链接 题意 : 求小于等于n中与n互质的数的个数. 思路 : 看数学的时候有一部分是将欧拉函数的,虽然我没怎么看懂,但是模板我记得了,所以直接套了一下模板. 这里是欧拉函数的简介. #includ ...

  7. POJ 1386 有向图欧拉通路

    题意:给你一些字符串,这些字符串可以首位相接(末位置如果和另一个字符串的首位置相同的话就可以相连) .然后问你是否可以全部连起来. 思路:就是取出每个字符串的首尾位置,然后求出出度和入度,根据有向欧拉 ...

  8. poj 2773 利用欧拉函数求互质数

    题意:找到与n互质的第 k个数 开始一看n是1e6 敲了个暴力结果tle了,后来发现k达到了 1e8 所以需要用到欧拉函数. 我们设小于n的 ,与n互质的数为  (a1,a2,a3.......a(p ...

  9. poj 2480 (欧拉函数应用)

    点击打开链接 //求SUM(gcd(i,n), 1<=i<=n) /* g(n)=gcd(i,n),根据积性定义g(mn)=g(m)*g(n)(gcd(m,n)==1) 所以gcd(i,n ...

  10. POJ 2208 Pyramids 欧拉四面体

    给出边长,直接就可以求出体积咯 关于欧拉四面体公式的推导及证明过程 2010-08-16 14:18 1,建议x,y,z直角坐标系.设A.B.C少拿点的坐标分别为(a1,b1,c1),(a2,b2,c ...

随机推荐

  1. Js数组去重复取唯一值

    function isBigEnough(element) { return element >= 10; } var filtered = [12, 5, 8, 130, 44].filter ...

  2. junit类找不到的问题解决

    1. Class not found  *******java.lang.ClassNotFoundException: ******* at java.net.URLClassLoader$1.ru ...

  3. Android 程式开发:(十三)特殊碎片 —— 13.2 DialogFragment

    Android 程式开发:(十三)特殊碎片 —— 13.2 DialogFragment 原文地址 我们也可以创建另外一种碎片——DialogFragment.顾名思义,DialogFragment就 ...

  4. @GeneratedValue - fancychendong的专栏 - 博客频道 - CSDN.NET

    登录|注册 收藏成功 确定 收藏失败,请重新收藏 确定 标题 标题不能为空 网址 标签 摘要 公开 取消收藏 分享资讯 传PPT/文档 提问题 写博客 传资源 创建项目 创建代码片 设置昵称编辑自我介 ...

  5. WinForm窗体拖动代码

    本文转载自:http://www.cnblogs.com/ap0606122/archive/2012/10/23/2734964.html using System; using System.Co ...

  6. bzoj2467: [中山市选2010]生成树

    Description 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角 ...

  7. TX Textcontrol 使用总结四——打印

    使用内置的打印对话框在Text Control中只需一行代码就可以实现打印操作,通过调研 TextControl.Print 方法将打开一个打印对话框,用户可以设置打印机和其他打印参数.==>t ...

  8. TMS320C54x系列DSP的CPU与外设——第1章 绪论

    第1章 绪论 TMS320C54x DSP是TMS320系列DSP产品中的定点数字信号处理器.C54x DSP满足了实时嵌入式应用的一些要求,例如通信方面的应用. C54x的中央处理单元(CPU)具有 ...

  9. 黄聪:如何添加360浏览器(chrome)添加JavaScript例外,禁止网站加载JS

    注意:通配符两侧的[]不能省略

  10. HashMap 实现原理(复习)

    1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端. 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大.但数组的二分查找时间复杂度小,为O(1 ...