有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子能直接瞬移到蓝色格子),求到第n行第m列的格子有几种方案,答案对1000000007取模。
  
    Input
  
 
  单组测试数据。 两个整数n,m(2<=n,m<=100000)
    Output
  
 
  一个整数表示答案。
    Input示例
  
 
  
    4 5
  
 
  
    Output示例
  
 
  
    10
  
 
  <pre name="code" class="cpp">#include<cstdio>
#include<cstring>
const long long mod=1000000007;
typedef long long ll;
const int N=100002;
ll inv[N];
int main()
{
    int n,m;
    inv[1]=1;
    for(int i=2;i<N;i++)inv[i]=(mod-mod/i)*inv[mod%i]%mod;
    while(~scanf("%d%d",&n,&m)){
        if(n==1||m==1){
            printf("0\n");continue;
        }
        n=n+m-4;
        m=m-2;
        ll ans=1;
        for(int i=1;i<=m;i++){
            ans=(ans*(ll)(n-i+1))%mod;
            ans=(ans*inv[i])%mod;
        }
        printf("%lld\n",ans);
    }
    return 0;
}
   
                  
                  
                  
                  
本文介绍了一种解决无限矩形网格中从特定起点到达指定终点的不同路径数量的问题。通过使用组合数学的方法,给出了一种高效的算法实现,适用于编程竞赛及算法优化场景。
          
   
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					2万+
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            