zoukankan      html  css  js  c++  java
  • HDU 6425 Rikka with Badminton(组合问题签到)题解

    题意:问你有多少种选法使得不能满足大于等于2个拍子且大于等于1个球。

    思路:数学组合问题,分类讨论一下,刚开始的时候分的很乱,写的乱七八糟的...还有注意MOD,基本上有大数相乘的地方都要先MOD一下,不然可能会溢出。

    代码:

    #include<set>
    #include<map>
    #include<cstdio>
    #include<utility>
    #include<cmath>
    #include<stack>
    #include<vector>
    #include<queue>
    #include<cstring>
    #include<string>
    #include<sstream>
    #include<iostream>
    #include<algorithm>
    #define ll long long
    #define ull unsigned long long
    using namespace std;
    const int maxn = 100+10;
    const int seed = 131;
    const int MOD = 998244353;
    const int INF = 0x3f3f3f3f;
    ll pow_mul(ll a,ll b){
        ll ans = 1;
        while(b){
            if(b & 1) ans = (ans * a) % MOD;
            a = (a * a) % MOD;
            b >>= 1;
        }
        return ans;
    }
    int main(){
        int T;
        scanf("%d",&T);
        ll a,b,c,d,n;    //都没,有拍,有球,都有
        while(T--){
            scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
            ll ans = 0;
            if(b) ans = (ans + (pow_mul(2,a) * (pow_mul(2,b) - 1)) % MOD) % MOD;   //只有拍
            if(c) ans = (ans + (pow_mul(2,a) * (pow_mul(2,c) - 1)) % MOD) % MOD;   //只有球
            if(b && c) ans = (ans + ((pow_mul(2,a) * (pow_mul(2,c) - 1)) % MOD) * b) % MOD;    //一拍N球
            if(d) ans = (ans + (pow_mul(2,a + c) * d) % MOD) % MOD; //一拍N球
            ans += pow_mul(2,a);    //都没有
            ans %= MOD;
            printf("%lld
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    推荐一款idea 翻译插件 ECTranslation
    idea 执行maven 命令
    Future Clalback使用案例
    newCachedThreadPool使用案例
    线程池 原理学习笔记
    使用curator框架简单操作zookeeper 学习笔记
    mongo aggregate 用法记录
    ReentrantLock 学习笔记
    VUE:过渡&动画
    VUE:生命周期
  • 原文地址:https://www.cnblogs.com/KirinSB/p/9507375.html
Copyright © 2011-2022 走看看