[51nod-1120]机器人走方格V3 题解
来源:互联网 发布:java 设置useragent 编辑:程序博客网 时间:2024/04/30 09:20
题目传送门
对于这题,我只能说,Lucas大法好,还有就是对于求上三角和下三角的方案数,基本跟卡特兰树有关。
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define rep(i,a,n) for (int i=a;i<=n;i++)#define per(i,a,n) for (int i=a;i>=n;i--)#define Clear(a,x) memset(a,x,sizeof(a))#define ll long long#define INF 2000000000#define eps 1e-8#define db doubleusing namespace std;int read(){ int x=0,f=1; char ch=getchar(); while (ch<'0'||ch>'9') f=ch=='-'?-1:f,ch=getchar(); while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}const int mod=10007;int n;ll exgcd(ll a,ll b,ll &x,ll &y){ if (b==0){ x=1; y=0; return a; } ll d=exgcd(b,a%b,x,y); ll tmp=x; x=y;y=tmp-(a/b)*y; return d;}ll C(ll x,ll y){ ll x1=1,y1=1; per(i,x,y+1) x1*=i,x1%=mod; rep(i,2,y) y1*=i,y1%=mod; ll x2=0,y2=0; exgcd(y1,mod,x2,y2); while (x2<0) x2+=mod; return x1*x2%mod;}ll lucas(ll n,ll m){ return m==0?1:C(n%mod,m%mod)*lucas(n/mod,m/mod)%mod;}int main(){ while (~scanf("%d",&n)){ n--; ll d1,d2; ll x=lucas(2*n,n); ll d=exgcd(n+1,mod,d1,d2); while (d1<0) d1+=mod; printf("%lld\n",2*x*d1%mod); } return 0;}
阅读全文
0 0
- [51nod-1120]机器人走方格V3 题解
- 51nod 1120 机器人走方格v3
- 51nod 1120 机器人走方格 V3
- 【51 Nod】 1120 机器人走方格 V3
- 51Nod-1120-机器人走方格 V3
- 1120 机器人走方格 V3
- 1120 机器人走方格 V3
- [51nod-1119]机器人走方格V1 题解
- 51NOD 1120 机器人走方格 V3(卢卡斯定理 + 非降路径)
- 51nod 1120 机器人走方格 V3(卡特兰数,lucas定理)
- 51nod 1120 机器人走方格V3 卡特兰数+卢卡斯定理
- 51nod 1120 机器人走方格 V3 lucas+卡特兰+逆原 好题
- 51nod 1120 机器人走方格V3【卡特兰数】【卢卡斯定理】
- 51nod 1120 机器人走方格V3(组合数学+卡特兰数+Lucas)
- 51 Nod 机器人走方格
- 机器人走方格 51Nod
- 【51Nod1120】机器人走方格 V3
- 【51Nod1120】机器人走方格 V3
- 安卓入门
- LeetCode 78. Subsets
- python读取文件并转换成字节数组
- 矩阵从左上角到右下角的最优路径使得经过路径上的权值和最大(最小)
- XShell ------ 串口 设置
- [51nod-1120]机器人走方格V3 题解
- usaco6.1.3 Cow XOR
- CodeIgniter Model
- partition-list
- week2
- 《Effective Java》(12~16)阅读笔记
- leetcode-month1-week4
- android调试篇之eclipse 2:调试步骤-断点调试
- ViewPager实现轮播图和小圆点