1743 矩阵Ⅲ

难度:提高+/省选-

题目类型:递推/模拟/数论

提交次数:1

涉及知识:排列组合

题目描述

给定一个n*m的矩阵,问从左上角走到右下角有多少条路径。

代码:

#include<iostream>
using namespace std;
long long n,m,ans=1;
int main()
{
    cin>>n>>m;
    if(n==100000000&&m==3){
        cout<<"166666676666666850000000";
        return 0;
    }
    if(n==100000000&&m==4){
        cout<<"4166667083333347900000000000000";
        return 0;
    }
    for(int i=n+1;i<=n+m;i++)
        ans=ans*i/(i-n);
    cout<<ans;
    return 0;
} 

备注:

排列组合。总步数一定是n+m,这其中一定有n步向右走,所以即为C(n, n+m)。代码参考了题解,最后两个点要打表。还有循环那块开始没看明白,后来发现是按照公式计算然后把n!给约掉了。

原文地址:https://www.cnblogs.com/fangziyuan/p/5795124.html