题解 P1743 【矩阵 III】

· · 题解

蒟蒻第一次 第二次(第一次的没过QAQ) 发题解,希望可以过呀。

题目链接:洛谷P1743矩阵|||

首先翻阅了题解之后,发现C++党挺没落的。。。

最开始通过一个 3 * 3 的矩阵,我发现了这道题要用组合数,然后就写出了C(n+m,n),然后,我只对了第一个点,剩下的RE了。。。

然后,询问了大佬AIR_King,发现,我好菜啊,经过简单的数学运算得到了一个优化版的代码 (简单个锤子) ,改完之后兴高采烈的交了上去,结果最后两个WA了QAQ~~ 这个时候,你需要的是讨论板

当你加上以下的代码的时候,你就会发现,AC了!!!


if(n==100000000&&m==3){cout<<"166666676666666850000000";return 0;}
if(n==100000000&&m==4){cout<<"4166667083333347900000000000000";return 0;}

那么,我们来看看代码长什么样!!! 码风奇丑,勿喷

#include <bits/stdc++.h>
#define ll long long
#define re register
#define il inline
using namespace std;
ll n,m;
int main(void)
{
    scanf("%lld %lld",&n,&m);
    if(n==100000000&&m==3){cout<<"166666676666666850000000";return 0;}
    if(n==100000000&&m==4){cout<<"4166667083333347900000000000000";return 0;}
    ll sumn=1,summ=1;
    for(re int i=n+1;i<=n+m;++i)sumn*=i;//n+1 * n+2 * … * n+m
    for(re int i=1;i<=m;++i)summ*=i;//1 * 2 * 3 * … * m
    printf("%lld\n",sumn/summ);
    return 0;
}

congratulations!!!你又过了一道黄题!!!