POJ 2154 Color 【polya+dfs】
来源:互联网 发布:mac铁锈红 编辑:程序博客网 时间:2024/06/11 03:00
看来有必要变得更加强大啊......... 141MS
#include<cstdio>#include<vector>#include<cmath>using namespace std;const int maxn=1<<15;vector<pair<int,int> >v;int vis[maxn],prime[maxn];int n,mod,cnt=0;void init(){ for(int i=2;i<maxn;i++) if(!vis[i]) { prime[cnt++]=i; for(int j=i*i;j<maxn;j+=i) vis[j]=1; }}int phi(int x){ int a=x; for(int i=0;i<cnt;i++) { int &p=prime[i]; if(p*p>x) break; if(x%p==0) { while(x%p==0) x/=p; a-=a/p; } } if(x>1) a-=a/x; return a%mod;}int pow(int x){ int ans=1,base=n%mod; while(x) { if(x&1) ans=ans*base%mod; base=base*base%mod;x>>=1; } return ans;}int dfs(int pos,int cur){ int ans=phi(n/cur)*pow(cur-1)%mod; while(pos<v.size()) { int nxt=cur; for(int i=0;i<v[pos].second;i++) { nxt*=v[pos].first; ans=(ans+dfs(pos+1,nxt))%mod; } pos++; } return ans;}void read(int &d){ char ch; while(ch=getchar(),ch<48||ch>57);d=ch-48; while(ch=getchar(),ch>47&&ch<58) d=d*10+ch-48;}void write(int d){ if(d==0){puts("0");return;} char str[6];str[5]=0;int i; for(i=4;d;i--) str[i]=d%10+48,d/=10; puts(str+i+1);}int main(){ int t;init(); read(t); while(t--) { read(n),read(mod); v.clear();int x=n; for(int i=0;i<cnt;i++) { int num,&p=prime[i]; if(p*p>x) break; if(x%p) continue; for(num=0;x%p==0;num++) x/=p; v.push_back(make_pair(p,num)); } if(x>1) v.push_back(make_pair(x,1)); write(dfs(0,1)); } return 0;}
- POJ 2154 Color 【polya+dfs】
- poj 2154 Color ----polya计数
- POJ 2154 Color(polya)
- poj 2154 Color( polya 计数)
- POJ 2154 Color(polya+欧几里得)
- POJ 2154 Color Polya(Polya定理+欧拉函数)
- poj 2154 Color(欧拉函数+Polya)
- POJ 2154 Color (polya 欧拉函数)
- poj 2154 Color(polya 定理)
- poj 2154 Color(polya + 欧拉函数)
- 2154 Color//POLYA
- POJ 2154 Color Polya定理+欧拉函数
- POJ 2154 Color polya计算+欧拉优化
- POJ 2154 Color (Polya定理+欧拉函数)
- Poj 2154 Color (Polya计数 欧拉函数优化)
- poj 2154 Color(polya计数 + 欧拉函数优化)
- poj 2154 Color (polya,欧拉函数|容斥原理)
- poj 2154 Color polya计数+欧拉优化
- Extjs的Window在IE6中滚动条失效,表单太大 当出现滚动条 时候会出现window和form错位
- oracle认证书籍
- "天才"排序算法:Sleepsort
- 【二维树状数组】HDU 1892
- 动态规划——HDOJ 1087
- POJ 2154 Color 【polya+dfs】
- 辞去斯坦福大学终身教职,创立Udacity线上大学,或将改变未来获得教育与知识的方式
- Eclipse安装tomcat
- 如何使用jsp+mysql创建留言本
- 鸟哥的 Linux 与 ADSL 私房菜 大陆版
- 01背包、完全背包、多重背包详解
- stty erase 使用方法
- Oracle 字符集的查看和修改
- 【RMQ & LCA】