问题标题: 简单计数

0
0
已解决
周明轩
周明轩
资深光能
资深光能

题目名称:简单计数 (总提交:769 次通过数:28 次)

题目描述

有一个n*n的网格,你初始在左下角(0,0)的位置,现在你每次可以向右走一步或者向上走一步,现在你想走到右上角(n,n)的位置,但是你不走到对角线上(即除了端点外不能经过(i,i)这样的坐标),问你一共有多少种走法,答案对p取模后输出。

程序输入说明

第一行为测试组数T(1≤T≤10),以下T行每行两个整数,n(1≤n≤1000000000),p(1≤p≤100000),分别是网格的宽度,以及给定的模数,模数保证是质数。

程序输出说明

共打印T行,每一行表示对p取模后的答案。

程序输入样例

2
1 97
2 97

程序输出样例

2
2

数据范围及提示

暂无提示
周明轩在2020-10-16 22:07:47追加了内容

https://newcourse.codingtang.com/#/home


0
已采纳
杜文博
杜文博
资深守护
资深守护
  1. int processNew(int m,int n){

  2. int **Q=new int*[m+1];

  3. for(int i=0; i<=m; ++i){

  4. Q[i]=new int[n+1]();

  5. }

  6. //初始化

  7. Q[0][0]=0;

  8. for(int j=1; j<=n; ++j)

  9. Q[0][j]=1;

  10. for(int i=1; i<=m; ++i)

  11. Q[i][0]=1;

  12. //迭代计算

  13. for(int i=1; i<=m; ++i){

  14. for(int j=1; j<=n; ++j){

  15. Q[i][j]=Q[i-1][j]+Q[i][j-1];

  16. }

  17. }

  18. int res=Q[m][n];

  19. delete [] Q;

  20. return res;

  21. }

 

0
0
我要回答