山东省第二届ACM大学生程序设计竞赛(原题) D:Binomial Coeffcients
2014-04-20 22:23
344 查看
Binomial Coeffcients
Time Limit: 1000MS Memory limit: 65536K
题目描述
输入
输出
示例输入
3 1 1 10 2 954 723
示例输出
1 45 3557658
提示
来源
山东省第二届ACM大学生程序设计竞赛计算二项式系数对于10000003的模,问题主要是如何求出二项式系数:
开始的思路是先算出n!对于10000003的模,再算出(n-k)!对于10000003的模,及k!对于10000003的模,然后再算出题目要求的,但这样所求的结果不对,可能是同余的可除性是有条件的即,条件可除性,所以不对.注意到二项式系数与杨辉三角的关系,可以直接求出题目要求的模:
代码:
#include<iostream> #include<stdio.h> #include<memory.h> #define M 10000003 #define N 1000 using namespace std; int c[1000][1001]; int mod(int n,int k) { if(n==0) return 1; return c[n-1][k]; } int main() { int n,t,k,i,m,j; c[0][0]=1; c[0][1]=1; for(i=0;i<N;i++) { c[i][0]=1; for(j=1;j<=i;j++) { c[i][j]=c[i-1][j-1]+c[i-1][j]; if(c[i][j]>M) c[i][j]=c[i][j]%M; //防止溢出整形范围 } c[i][j]=1; } while(scanf("%d",&t)!=EOF) { for(i=0; i<t; i++) { scanf("%d%d",&n,&k); m=mod(n,k); printf("%d\n",m); } } }
相关文章推荐
- 山东省第二届ACM大学生程序设计竞赛 The Android University ACM Team Selection Contest
- 山东省第二届ACM大学生程序设计竞赛 Crack Mathmen 打表 模拟
- [2011山东省第二届ACM大学生程序设计竞赛]——Mathmen
- [2011山东省第二届ACM大学生程序设计竞赛]——Identifiers
- 山东省第二届ACM大学生程序设计竞赛 Sequence
- 山东省第二届ACM大学生程序设计竞赛——Identifiers
- 山东省第二届ACM大学生程序设计竞赛:The Android University ACM Team Selection Contest
- 组队周赛_山东省第二届ACM大学生程序设计竞赛
- 山东省第二届ACM大学生程序设计竞赛——Crack Mathmen
- 山东省第二届ACM大学生程序设计竞赛:Identifiers
- [2011山东省第二届ACM大学生程序设计竞赛]——Identifiers
- 山东省第二届ACM大学生程序设计竞赛——Mathman Bank
- 山东省第二届ACM大学生程序设计竞赛:Binomial Coeffcients
- SDUT 2163 Identifiers 山东省第二届ACM大学生程序设计竞赛
- [2011山东省第二届ACM大学生程序设计竞赛]——The Android University ACM Team Selection Contest
- 山东省第二届ACM大学生程序设计竞赛 Binomial Coeffcients 递推
- SDUT 2164 Binomial Coeffcients 山东省第二届ACM大学生程序设计竞赛
- 山东省第二届ACM大学生程序设计竞赛 Identifiers
- [2011山东省第二届ACM大学生程序设计竞赛]——Mathman Bank
- [2011山东省第二届ACM大学生程序设计竞赛]——Crack Mathmen