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 }