POJ 2409-Let it Bead(Polya计数)
2015-07-24 16:06
489 查看
题目地址:POJ 2409
题意:给一个包含s个珠子的项链,用c种颜色对其染色,问存在多少个不同的项链。
思路:和上一篇POJ 1286差不多。
题意:给一个包含s个珠子的项链,用c种颜色对其染色,问存在多少个不同的项链。
思路:和上一篇POJ 1286差不多。
#include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <sstream> #include <algorithm> #include <set> #include <queue> #include <stack> #include <map> //#pragma comment(linker, "/STACK:102400000,102400000") using namespace std; typedef long long LL; const int inf=0x3f3f3f3f; const double pi= acos(-1.0); const double esp=1e-6; LL gcd(LL a,LL b) { while(b!=0) { LL r=b; b=a%b; a=r; } return a; } LL modxp(LL a,LL b) { LL res=1; while(b!=0) { if(b&1) res*=a; a=a*a; b>>=1; } return res; } int main() { LL c,s,i; LL ans; while(~scanf("%lld %lld",&c,&s)) { if(!c&&!s) break; ans=0; for(i=1; i<=s; i++) ans+=modxp(c,gcd(s,i)); if(s&1) { ans+=modxp(c,s/2+1)*s; } else { ans+=modxp(c,s/2+1)*(s/2); ans+=modxp(c,s/2)*(s/2); } printf("%lld\n",ans/(s*2)); } return 0; }
相关文章推荐
- JAVA最多支持多少个线程
- 连接查询,条件在on和where后面的区别
- C++构造函数
- NSString&NSMutableString常用操作梳理
- [LeetCode]Course Schedule
- POJ 1018 Communication System
- Model绑定机制3:集合+字典
- 一元二次方程求解
- 例如找出令人信服的权威C++中间malloc与new
- lua
- java keytool
- Linux: /dev/random , /dev/urandom
- iOS解析.crash文件崩溃报告
- IOS 界面传值
- HDU 5308 I Wanna Become A 24-Point Master(找规律+模拟)
- 使用Profiler工具分析内存占用情况
- Model绑定机制2:数组
- HDU - 5067 Harry And Dig Machine (bfs + 状态压缩)
- HTTP Status 500 - Unable to compile class for JSP问题小结(解决)
- 程序中三种不同的出错处理方式比较