51nod 1120 机器人走方格 V3(卡特兰数,lucas定理)

来源:互联网 发布:南风知我意琰阙 编辑:程序博客网 时间:2024/04/30 11:17

卡特兰数+lucas定理

#include <iostream>#include <string.h>#include <stdio.h>using namespace std;typedef long long LL;LL n,p=10007;LL quick_mod(LL a, LL b){    LL ans = 1;    a %= p;    while(b)    {        if(b & 1)        {            ans = ans * a % p;            b--;        }        b >>= 1;        a = a * a % p;    }    return ans;}LL C(LL n, LL m){    if(m > n) return 0;    LL ans = 1;    for(int i=1; i<=m; i++)    {        LL a = (n + i - m) % p;        LL b = i % p;        ans = ans * (a * quick_mod(b, p-2) % p) % p;    }    return ans;}LL Lucas(LL n, LL m){    if(m == 0) return 1;    return C(n % p, m % p) * Lucas(n / p, m / p) % p;}int main(){    scanf("%I64d%I64d", &n);    n--;    printf("%I64d\n", ((Lucas(2*n,n)-Lucas(2*n,n-1)+p)%p)*2%p);    return 0;}
阅读全文
0 0
原创粉丝点击