zoukankan      html  css  js  c++  java
  • 【费马小定理】BZOJ3260-跳

    【题目大意】

    一个二维平面。在这个平面内,如果当前跳到了(x,y) ,那下一步可以跳到以下 4个点: (x-1,y), (x+1,y), (x,y-1), (x,y+1)。
    假设到达(x,y)需要耗费的体力用 C(x,y)表示。   
    对于 C(x,y),有以下几个性质:
    1 、若x=0或者 y=0,则 C(x,y)=1。
    2 、若x>0且 y>0,则 C(x,y)=C(x,y-1)+C(x-1,y)。
    3 、若x<0且 y<0,则 C(x,y)=无穷大。
    求从 (0,0)出发到(N,M),最少花费多少体力(到达 (0,0) 点花费的体力也需要被算入)。  
    由于答案可能很大,只需要输出答案对 10^9+7取模的结果。
    【思路】
    组合数^ ^
     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<map>
     5 #define ll long long
     6 using namespace std;
     7 const int mod=1e9+7;
     8 ll n,m;
     9 
    10 ll pow(ll x,ll k)
    11 {
    12     ll ret=1;
    13     for(int i=k;i;i>>=1,x=x*x%mod)
    14         if(i&1) ret=ret*x%mod;
    15     return ret;
    16 }
    17 
    18 
    19 void solve()
    20 {
    21     scanf("%lld%lld",&n,&m);
    22     if(n>m) swap(n,m);
    23     m%=mod;
    24     ll ans=m+1;
    25     
    26     ll x=1;
    27     for(int i=1;i<=n;i++)
    28     {
    29         x=(x*(m+i))%mod;
    30         x=(x*pow(i,mod-2))%mod;
    31         ans=(ans+x)%mod;
    32     }
    33     printf("%lld
    ",ans);
    34 
    35 }
    36 
    37 int main()
    38 {
    39     solve();
    40     return 0;
    41 }
  • 相关阅读:
    numpy-tutorial
    Pandas 数据分析资料
    python3 创建虚拟环境
    机器学习中的评价指标--02
    机器学习中的评价指标--01
    pytest 测试框架
    Ubuntu 添加删除用户
    VSCODE 设置护眼颜色
    信息熵、交叉熵、KL散度等等
    深度学习优化方法演变和公式理解
  • 原文地址:https://www.cnblogs.com/iiyiyi/p/5920480.html
Copyright © 2011-2022 走看看