HDU3304 POJ3146 Interesting Yang Hui Triangle Lucas定理
2015-05-29 20:53
357 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3304
http://poj.org/problem?id=3146
题目大意:找出杨辉三角中第n+1行不能被素数p整除的数有多少个。
分析:这题是HDU4349的加强版。同样是Lucas定理解决。
我们知道,对于一个组合数C(n,m)mod p来说,我们用a[k]a[k-1]...a[0],b[k]b[k-1]...b[0]来分别表示n和m对应的p进制数,那么有C(n,m)mod p=C(a[k],b[k])×C(a[k-1],b[k-1])×...×C(a[0],b[0])mod p,要想使C(n,m)不能被p整除,只需保证C(a[i],b[i])(i
form 0 to k)中没有0出现,即,不存在C(a[i],b[i]),使得a[i]>=b[i]===>C(a[i],b[i])=0,当且仅当b[i]>a[i],所以,每一位上的bi的方案数就是(ai%p+1),由乘法原理,总方案数就是这些方案数的乘积。
实现代码如下:
http://poj.org/problem?id=3146
题目大意:找出杨辉三角中第n+1行不能被素数p整除的数有多少个。
分析:这题是HDU4349的加强版。同样是Lucas定理解决。
我们知道,对于一个组合数C(n,m)mod p来说,我们用a[k]a[k-1]...a[0],b[k]b[k-1]...b[0]来分别表示n和m对应的p进制数,那么有C(n,m)mod p=C(a[k],b[k])×C(a[k-1],b[k-1])×...×C(a[0],b[0])mod p,要想使C(n,m)不能被p整除,只需保证C(a[i],b[i])(i
form 0 to k)中没有0出现,即,不存在C(a[i],b[i]),使得a[i]>=b[i]===>C(a[i],b[i])=0,当且仅当b[i]>a[i],所以,每一位上的bi的方案数就是(ai%p+1),由乘法原理,总方案数就是这些方案数的乘积。
实现代码如下:
#include <cstdio> #include <iostream> using namespace std; const int mod=10000; int main() { int p,n,T=1; while(scanf("%d%d",&p,&n)!=-1) { if(p==0&&n==0) break; int ans=1; while(n) { ans*=(n%p+1); n/=p; if(ans>=mod) ans%=mod; } printf("Case %d: %04d\n",T++,ans); } return 0; }
相关文章推荐
- 玩转Light Blue之添加设备信息
- UITableView的tableHeaderView和viewForHeaderInSection區別
- 5.UI线程和非UI线程的交互方式
- 【STL源码剖析读书笔记】自己实现queue之MyQueue(底层用MyList)
- 【STL源码剖析读书笔记】自己实现queue之MyQueue(底层用MyList)
- hdu4027 Can you answer these queries?
- SQuirreL SQL Client使用入门2---插件使用2
- Ueditor/前后端数据整合
- SQuirreL SQL Client使用入门2---插件使用
- 修改UITabBarItem字体颜色
- 兔子-Android 项目中values-v11 values-v14
- GUET-ACM-#1110-A+B增强版
- build path entry is missing
- [ios]UITabBarController 的UITabBarControllerDelegate 与UITabBarDelegate冲突
- Solr 使用自定义 Query Parser(短语查询,精准查询)
- iOS开发UI篇 -- UIButton
- A potentially dangerous Request.Path value was detected from the client异常解决方案
- SQuirreL SQL Client使用入门1
- iOS开发UI篇 -- 0323初识iOS
- [API GUIDE 学习笔记]android MediaPlayer 播放视频