zoukankan      html  css  js  c++  java
  • HDU 6425

    题意

    有n个学生打羽毛球,其中有a个人没拍没球,b个人只有拍,c个人只有球,d个人有拍有球。
    现在要求选出几个人组织一场比赛,一共有2n种情况,组织成功的条件是至少有2个拍1个球。求有多少种情况无法组织成功。

    思路

    一开始想组织成功的,但是发现情况太多太复杂,只要有2拍1球就可以,那么可能会有2排1球,2排2球,3排1球,3排2球……不好列举。
    反过来想无法组织成功的情况并不多:0排0球,0拍n球,1排n球,n排0球。
    可以列出组合公式:

    ans=i=0aCai[1+i=1bCbi+i=1cCci(b+d+1)+d]

    其中把组合数求和改成2的…次幂

    ans=2a[1+(2b1)+(2c1)(b+d+1)+d]

    再利用快速幂取模计算即可

    AC代码

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    typedef long long ll;
    const int mod = 998244353;
    ll quickmi(ll a, ll b){
        int ans = 1;
        a = a % mod;
        while(b){
            if(b&1)ans = (ans * a) % mod;
            a = (a * a) % mod;
            b >>= 1;
        }
        return ans%mod;
    }
    
    int main()
    {
        int T;
        ll a, b, c, d;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
            printf("%lld
    ",quickmi(2,a)%mod*(1+(quickmi(2,b)-1)%mod+((quickmi(2,c)-1)%mod*(b+d+1)%mod)%mod+d)%mod);
        }
        return 0;
    }
    
  • 相关阅读:
    Java IO流面试题
    Oracle和MySql的区别
    Mybatis与Hibernate不同处
    java 多线程面试题
    Java 异常面试题
    Http中Get和Post请求方式的区别
    Mybatis常见面试题(转)
    解决:Adb connection Error:远程主机强迫关闭了一个现有的连接
    option的value、text与label 古老的bug
    测试
  • 原文地址:https://www.cnblogs.com/JinxiSui/p/9740520.html
Copyright © 2011-2022 走看看