zoukankan      html  css  js  c++  java
  • 51Nod 1118 机器人走方格--求逆元

    (x/y) %mod =x*(y^(mod-2))%mod;

    在算x,y的时候可以一直mod 来缩小

    y^(mod-2)显然是个快速幂

    #include <iostream>  
    #include <stdio.h>  
    #include <math.h>  
    using namespace std;   
    long long mod=1e+9+7;  
    long long  quick(long long  n,long long  m)  
    {  
        long long ans=1;  
        while(m)  
        {  
            if(m%2==1)  
                ans=ans*n%mod;  
            m/=2;  
            n*=n;  
            n%=mod;  
        }  
        return ans;  
    }  
    int main()  
    {  
        int n,m;  
        cin>>n>>m;  
        int mu=m+n-2;  
        long long ans_mu=1;  
        long long ans_zi=1;  
        for(int i=m+n-2;i>m-1;i--)  
            ans_zi=ans_zi*i%mod;  
        for(int j=1;j<=n-1;j++)  
            ans_mu=ans_mu*j%mod;  
        long long tep=quick(ans_mu,mod-2);  
        cout<<ans_zi*tep%mod<<endl;  
        return 0;  
    }  

    法二:递推

    mp[i][j]=mp[i-1][j]+mp[i][j-1]

    #include <bits/stdc++.h>
    #define MAXN 1010
    #define ll long long
    using namespace std;
    
    ll mp[MAXN][MAXN];
    const ll mod=1e9+7;
    
    int main(void){
        int m, n;
        scanf("%d%d", &n, &m);
        for(int i=0; i<n; i++){
            mp[i][0]=1;
        }
        for(int j=0; j<m; j++){
            mp[0][j]=1;
        }
        for(int i=1; i<n; i++){
            for(int j=1; j<m; j++){
                mp[i][j]=mp[i-1][j]+mp[i][j-1];
                if(mp[i][j]>mod){
                    mp[i][j]%=mod;
                }
            }
        }
        printf("%lld
    ", mp[n-1][m-1]);
        return 0;
    }
  • 相关阅读:
    题目1101:计算表达式
    九度oj 题目1107:搬水果
    [Hihocoder] 字符串排序
    [hzwer] 模拟T
    [Luogu] 宝藏
    [Luogu] 列队
    [Luogu] 奶酪
    [Luogu] 逛公园
    [Luogu] 时间复杂度
    [Luogu] 小凯的疑惑
  • 原文地址:https://www.cnblogs.com/kimsimple/p/7215398.html
Copyright © 2011-2022 走看看