P1722 矩阵 II

原题链接

考察:卡特兰数

错误思路:

       利用Cn2n /n+1 的公式求解.本蒟蒻没搞懂Y总推的公式,这个公式是在取模意义下,求(n+1)的逆元再求.而不是求完组合数/n+1... 如果是累加的话,需要每个都求n+1的逆元.但是这道题,不能用这个公式,因为与100一起求exgcd的数未必gcd=1,如果gcd不等于1,那么就没有逆元

正确思路:

       利用卡特兰数的定义式求解,没有除法不用求逆元

卡特兰数的各种公式GO

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;//错误原因,模运算的除法要化为逆元
 4 typedef long long ll;
 5 const int N = 210;
 6 ll f[N];
 7 int n;
 8 void inits() 
 9 {
10     f[1] = f[0] = 1;
11     for(int i=2;i<=n;i++)
12         for(int j=0;j<i;j++)
13         {
14             f[i] += f[j]*f[i-j-1];
15             f[i]%=100; 
16         }
17           
18 }
19 int main()
20 {
21     scanf("%d",&n);
22     inits();
23     printf("%lld\n",f[n]);
24     return 0;
25 }

 

posted @ 2021-01-29 20:38  acmloser  阅读(79)  评论(0编辑  收藏  举报