G. One-Dimensional Puzzle

原题链接

题解,请看这里

细节

有除法的求模要求逆元

code

#include<bits/stdc++.h>
#define mod 998244353
#define ll long long
using namespace std;

inline void read(ll &x) {
    x = 0;
    ll flag = 1;
    char c = getchar();
    while(c < '0' || c > '9'){
        if(c == '-')flag = -1;
        c = getchar();
    }
    while(c >= '0' && c <= '9') {
        x = (x << 3) + (x << 1) + (c ^ 48);
        c = getchar();
    }
    x *= flag;
}

inline void write(ll x)
{
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        write(x / 10);
    putchar(x % 10 + '0');
}
long long qp(long long a, long long b)
{
    long long res = 1;
     while (b > 0) {
        if (b & 1) {
            res = res * a%mod;
        }
        a = a * a % mod;
        b >>= 1;
    }
    return res;
}
ll C(ll num,ll ch)
{
    if(!ch)return 1;
    //if(num<ch)return 0;
    ch=min(ch,num-ch);
    ll ans=1;
    for(ll i=1;i<=ch;i++)
    {
        ans=ans*(num-i+1)%mod*qp(i,mod-2)%mod;
    }
    return ans;
}
ll g(ll x,ll y)
{
    return C(x+y-1,y-1)%mod;
}
int main()
{
    ll t;
    read(t);
    while(t--)
    {
        ll a,b,c,d;
        read(a); read(b); read(c); read(d);
        ll ans=0;
        if(abs(a-b)>1)puts("0");
        else
        {

            if(a==b)
            {
                if(a==0) puts((c&&d)?"0":"1");
                else
                {
                    ans = ((g(c,b+1)*g(d,a))%mod+(g(d,a+1)*g(c,b))%mod)%mod;
                    write(ans);
                    puts("");
                }
            }
            else
            {
                ll e=max(a,b);
                ans = (g(c,e)*g(d,e))%mod;
                write(ans);
                puts("");
            }
        }
    }


    /*for(int i=5;i<=10;i++)
    {
        cout<<g(i,i)<<endl;
        cout<<C(i+i,i)<<endl;
    }*/
    return 0;
}

posted @   纯粹的  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示